RegEx .replace()不起作用

时间:2012-05-10 09:50:30

标签: javascript

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

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

其中sourcevalue = rgb(255,0,0)targetvalue = #FFFFFF,但sourcevalue未被targetvalue取代,为什么?

2 个答案:

答案 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;