javascript中的空间失败后的负向前瞻
问题描述:
我试图删除所有不包含变量的sCss属性,其中包含$c_
。只要在$c_
之前没有字符,它就可以正常工作。javascript中的空间失败后的负向前瞻
我有以下的正则表达式:[\-a-z]+:[\s\w\d]*(?!\$c_)[^{;]+;
前7个属性应该被保留,其余部分移除。
svg{
.fill{fill:$c_mainColorDark;}
.fill{fill: $c_mainColorDark;}
color:$c_red;
color: $c_red;
border:$c_red;
border:1px solid $c_red;
border: 1px solid $c_red;
height:em(16);
margin-right: 10px;}
例如在:https://regex101.com/r/1cGPar/1
我缺少什么?
答
你可以使用像(?!.*\$c_)
或(?![\w\s]*\$c_)
负先行放置:
后:
这样一来,有$c_
后:
都失败(即没有匹配的所有比赛将是回)。
请注意,\w
已经匹配数字,因此,[\w\d]
可以安全地减少到\w
。
我也认为加上i
不区分大小写的修饰符会使它更安全一些,因为[a-z]
也会匹配大写的ASCII字母。
尝试['[-az] +:(?!。* \ $ c_)[\ s \ w] * [^ {;] +;'](https://regex101.com/r/QWTW0I/ 1) –
工程太棒了!谢谢! – user3046591
很高兴为你效劳。请考虑接受答案(请参阅[如何接受SO答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)),并且如果我的答案证明对我有帮助,你(见[如何在堆栈溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow))。 –