1

我对一段 JS 代码有疑问。它应该从给定的样式声明中找到所有出现的 CSS 颜色值 ( colorNames, #FFFFFF, #FFF, RGB, transparent) 并将它们替换为一个span元素,然后是匹配本身。

好吧,一切似乎都很好,除了已经浪费了我一整天的 RGB() 。

一个小的演示文稿和代码可以在jsFiddle上找到。在这里,我们预览了我有问题的元素。

感谢您的时间和兴趣!

4

2 回答 2

1

以下应处理任何有效rgbrgba

var regex = new RegExp(
    "rgb\\((?:(?:\\s*\\d+\\s*,){2}\\s*\\d+|" +
    "(?:\\s*\\d+(?:\\.\\d+)?%\\s*,){2}\\s*\\d+(?:\\.\\d+)?%)\\s*\\)|" +
    "rgba\\((?:(?:\\s*\\d+\\s*,){3}|" +
    "(?:\\s*\\d+(?:\\.\\d+)?%\\s*,){3})\\s*\\d+(?:\\.\\d+)?\\s*\\)", "gi"
);

小提琴

于 2013-04-03T17:15:08.307 回答
0

rgb 函数不支持 alpha 参数(rgba 支持)。此外,与这些函数匹配的正则表达式也不起作用。我不得不承认,调试所有这些正则表达式以匹配一件事太痛苦了,所以我们将尝试只做一个。尝试(不对值进行任何检查):

/(rgb\((?:\s*\d{1,3}\s*%?\s*,?\s*){3}\))/gi

结果

编辑:
如果你想检查你的值,我们会让这个正则表达式复杂一点。

于 2013-04-03T15:17:38.570 回答