我对一段 JS 代码有疑问。它应该从给定的样式声明中找到所有出现的 CSS 颜色值 ( colorNames
, #FFFFFF
, #FFF
, RGB
, transparent
) 并将它们替换为一个span
元素,然后是匹配本身。
好吧,一切似乎都很好,除了已经浪费了我一整天的 RGB() 。
一个小的演示文稿和代码可以在jsFiddle上找到。在这里,我们预览了我有问题的元素。
感谢您的时间和兴趣!
以下应处理任何有效rgb
或rgba
值
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"
);
见小提琴。
rgb 函数不支持 alpha 参数(rgba 支持)。此外,与这些函数匹配的正则表达式也不起作用。我不得不承认,调试所有这些正则表达式以匹配一件事太痛苦了,所以我们将尝试只做一个。尝试(不对值进行任何检查):
/(rgb\((?:\s*\d{1,3}\s*%?\s*,?\s*){3}\))/gi
结果。
编辑:
如果你想检查你的值,我们会让这个正则表达式复杂一点。