我有一塊JS代碼的問題。它應該從給定的樣式聲明中找到所有出現的CSS顏色值(colorNames
,#FFFFFF
,#FFF
,RGB
,transparent
),並用一個span
元素替換它們,接着匹配它自己。匹配CSS RGB顏色值
好吧,一切似乎都沒問題,除了RGB()已經浪費了我整整一天的時間。
一個小的演示文稿和代碼可以在jsFiddle找到。在這裏,我們預覽了一些有問題的元素。
感謝您的時間和興趣!
我有一塊JS代碼的問題。它應該從給定的樣式聲明中找到所有出現的CSS顏色值(colorNames
,#FFFFFF
,#FFF
,RGB
,transparent
),並用一個span
元素替換它們,接着匹配它自己。匹配CSS RGB顏色值
好吧,一切似乎都沒問題,除了RGB()已經浪費了我整整一天的時間。
一個小的演示文稿和代碼可以在jsFiddle找到。在這裏,我們預覽了一些有問題的元素。
感謝您的時間和興趣!
rgb函數不支持alpha參數(rgba)。此外,與這些函數匹配的正則表達式不起作用。我不得不承認,調試所有這些正則表達式以僅匹配一件事情是一件很痛苦的事情,因此我們將嘗試只做一件事情。 嘗試(不是值的所有檢查):
/(rgb\((?:\s*\d{1,3}\s*%?\s*,?\s*){3}\))/gi
編輯:
如果你想查詢你的價值觀,我們就會變得複雜多一點這個正則表達式。
I真的不知道爲什麼你的Regex不想在'.replace()上工作,在'.match()'上像魅力一樣工作......我只是用'(rgb \\(。*?\\) )'現在是好的。我真的不關心檢查基本顏色的值,因爲我使用'document' DOM中檢索到的'rgb(x,y,z)'(如果我在.CSS文件中聲明瞭錯誤,可以在DOM .styleSheets元素中找到)。 [jsFiddle](http://jsfiddle.net/YEEnE/10/) – SYNCRo
它確實有效([jsFiddle](http://jsfiddle.net/YEEnE/11/)),你只需要替換'\ ''按'\'的方式來做。此外,'。*?'可能有點冒險,但我猜這不是問題,因爲你假設正確的CSS。 – Loamhoof
我認爲你的問題應該更清楚地解釋你在使用正則表達式找到像'rgb(x,y,z)' – Ian
nope這樣的模式時遇到問題,正如你所看到的,在那個巨大的正則表達式中,我有'rgb()'的四種模式,大部分來自於stackoverflow。 – SYNCRo
是的,我可以看到。但其他一切正常。所以你的問題在於具體的RGB正則表達式。看 - http://jsfiddle.net/Pm8vV/ - 只使用你發現的那些特殊的正則表達式,它仍然不起作用。 – Ian