匹配CSS RGB颜色值

时间:2013-04-03 14:52:26

标签: javascript css regex colors replace

我遇到一段JS代码问题。它应该从给定的样式声明中找到CSS颜色值的所有出现(colorNames#FFFFFF#FFFRGBtransparent)并替换它们使用span元素后跟匹配本身。

嗯,一切似乎都没问题,除了那些已经浪费了我一整天的RGB()。

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

感谢您的时间和兴趣!

2 个答案:

答案 0 :(得分: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"
);

请参阅FIDDLE

答案 1 :(得分:0)

rgb函数不支持alpha参数(rgba确实)。此外,与这些函数匹配的正则表达式不起作用。我不得不承认,调试所有正则表达式只匹配一件事太麻烦了,所以我们只会尝试一个。 尝试(不检查值):

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

Result

修改
如果你想检查你的价值观,我们会使这个正则表达式更加复杂。