求问js正则匹配

求问一个正则匹配。
eg:
@keyframes fadeIn{

 from {opacity :0;
            transform :translate3d(100%,0,0)
 }
 to.     {opacity: 1;
            transform:none;

}

.nav ul li{

    width:200px;
    height:300px;

}

想用正则匹配出大括号{至:前的样式名称,如width,height,transform这样的样式名,应该怎么写呢?之前的样式已经格式化成为一个长字符串了,只是不知道要对这个字符串再做怎样的操作才可以满足要求。求大神指点!谢谢!

阅读 2.3k
3 个回答
str.match(/[^{;\s]+(?=\s*:)/gm)

你应该想匹配的是css的属性名称吧,那么匹配规则除了花括号{至:外还需匹配;至:

[\{|\;]\s*(\S+)\s*\:

如有帮助忘采纳!

贴一个代码,用来捕获每个样式的第一条。你看一下是否满足你说的情况。

var x = '@keyframes fadeIn{from {opacity :0;transform :translate3d(100%,0,0)}to{aopacity: 1;transform:none;}';
var res = [], 
  lsIdx = 0, 
  idx = 0,
  reg = /\{\s{0,}([a-bA-Z]+)\s{0,}:/igm,
  init = reg.exec(x);

while(init) {
  res.push(init[1]);
  init = reg.exec(x);
}

console.log(res)

输出结果:

clipboard.png

话说 segmentfault 如何用小尾巴啊?我想找个女HR啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题