RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
其中sourcevalue = rgb(255,0,0)
和targetvalue = #FFFFFF
,但sourcevalue
未被targetvalue
取代,为什么?
答案 0 :(得分:4)
很可能是因为你没有正确地逃避括号:
var sourcevalue = "rgb\\(255,0,0\\)";
括号用于分组/反向引用匹配。如果你想匹配它们字面意思,你必须用\
来逃避它们。由于sourcevalue
是一个字符串,而\
也是字符串中的转义字符,因此您必须转义反斜杠以创建一个字符串。
否则,表达式将匹配rgb255,0,0
但不匹配rgb(255,0,0)
。
答案 1 :(得分:1)
因为sourcevalue是一个正确的Javascript正则表达式,但它没有按预期的方式工作。正则表达式中有特殊字符,如()括号。它们用于对正则表达式的部分进行分组。要使用它们的“文字”表示,你必须使用反斜杠来逃避它们
var RegEx = /rgb\(255,0,0\)/gi;