2017-02-17 69 views
2

我試圖刪除所有不包含變量的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

我缺少什麼?

+0

嘗試['[-az] +:(?!。* \ $ c_)[\ s \ w] * [^ {;] +;'](https://regex101.com/r/QWTW0I/ 1) –

+0

工程太棒了!謝謝! – user3046591

+0

很高興爲你效勞。請考慮接受答案(請參閱[如何接受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))。 –

回答

0

你可以使用像(?!.*\$c_)(?![\w\s]*\$c_)負先行放置:後:

​​7188​​

regex demo

這樣一來,有$c_:都失敗(即沒有匹配的所有比賽將是回)。

請注意,\w已經匹配數字,因此,[\w\d]可以安全地減少到\w

我也認爲加上i不區分大小寫的修飾符會使它更安全一些,因爲[a-z]也會匹配大寫的ASCII字母。