2014-10-27 33 views
0

我希望正則表達式可以幫助我找到CSS中效率低下的值。例如,一些較老的開發人員會將保證金值編寫爲margin:5px 5px 5px 5px,我想簡寫爲margin:5px。顯然,數值(以及單位值:px,em,%等)可以(並且確實)有所不同,但我需要設計一種查找所有匹配的重複數字的方法。使用正則表達式來幫助清理CSS值

這可能嗎?令人遺憾的是,我對正則表達式的瞭解非常有限。任何一種靈魂都能給我一些關於如何實現這種模式匹配的指導嗎?

感謝,

+1

我不明白你問什麼? – zxc 2014-10-27 15:57:10

+0

http://csstidy.sourceforge.net/ – 2014-10-27 16:06:21

回答

1

你需要使用 「反向引用」 正則表達式的一個例子:

/(padding|margin)[:] ([0-9](px|em)) \2 \2 \2;/ 

Test here

在PHP中,你可以做這樣的事情:

$your_css = preg_replace('@(padding|margin)[:] ([0-9]+(px|em))\s\2\s\2\s\2\s?;@ui,'\1:\2;', $your_css); 
+0

謝謝狡猾,這真的是一個幫助。 – 2014-10-28 09:23:52

+0

不客氣。好奇看到最後的結果;) – Sly 2014-10-29 08:30:12

1

搜索:((?:padding|margin)\s*:)(\s+\d+(?:px|em|%){4};?並替換它與$1$2

的Perl:

$css =~ s/((?:padding|margin)\s*:)(\s+\d+(?:px|em|%){4};?/$1$2/g; 

PHP:

$css = preg_replace('/((?:padding|margin)\s*:)(\s+\d+(?:px|em|%){4};?/', "$1$2", $css); 

您可以添加其他單位:

(?:px|em|cm|mm|in|pt|pc|%) 
+0

非常有幫助,非常感謝。 – 2014-10-28 09:24:35

+0

@AdamC:不客氣,很高興幫助。 – Toto 2014-10-28 09:52:47