1
RegEx = new RegExp(sourcevalue, "gi");

temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);

在哪里sourcevalue = rgb(255,0,0)targetvalue = #FFFFFF,但sourcevalue没有被 代替targetvalue,为什么?

4

2 回答 2

4

很可能是因为您没有正确地转义括号:

var sourcevalue = "rgb\\(255,0,0\\)";

括号用于分组/反向引用匹配。如果你想从字面上匹配它们,你必须用\. 由于sourcevalue是一个字符串并且\也是字符串中的转义字符,因此您必须转义反斜杠以创建文字。

否则,表达式将匹配rgb255,0,0但不匹配rgb(255,0,0)

于 2012-05-10T09:54:00.340 回答
1

因为 sourcevalue 是一个正确的 Javascript 正则表达式,但它没有按您预期的方式工作。正则表达式中有特殊字符,例如 () 括号。它们用于对正则表达式的各个部分进行分组。要将它们与它们的“字面”含义一起使用,您必须使用反斜杠来转义它们

var RegEx = /rgb\(255,0,0\)/gi;
于 2012-05-10T09:54:27.397 回答