Javascript RegEx.replace()不起作用

Javascript RegEx.replace()不起作用,javascript,Javascript,如果sourcevalue=rgb255,0,0且targetvalue=FFFFFF,但sourcevalue没有被targetvalue替换,原因是什么?很可能是因为没有正确地转义括号: RegEx = new RegExp(sourcevalue, "gi"); temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue); 括号用于分组/反向引用匹配项。如果你想从字面上匹配它们,你必须用\来逃避它们。由于sourcevalue是

如果sourcevalue=rgb255,0,0且targetvalue=FFFFFF,但sourcevalue没有被targetvalue替换,原因是什么?

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

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

temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
括号用于分组/反向引用匹配项。如果你想从字面上匹配它们,你必须用\来逃避它们。由于sourcevalue是一个字符串,并且\也是字符串中的转义字符,因此必须转义反斜杠才能创建一个文本字符


否则,表达式将与rgb255,0,0匹配,但与rgb255,0,0不匹配。

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

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

temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
括号用于分组/反向引用匹配项。如果你想从字面上匹配它们,你必须用\来逃避它们。由于sourcevalue是一个字符串,并且\也是字符串中的转义字符,因此必须转义反斜杠才能创建一个文本字符


否则,表达式将匹配rgb255,0,0,但不匹配rgb255,0,0。

因为sourcevalue是一个正确的Javascript正则表达式,但它的工作方式与您期望的不一样。正则表达式中有特殊字符,如括号。它们用于对正则表达式的部分进行分组。要使用它们的字面意思,你必须使用反斜杠来避开它们

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

因为sourcevalue是一个正确的Javascript正则表达式,但它没有按照您期望的方式工作。正则表达式中有特殊字符,如括号。它们用于对正则表达式的部分进行分组。要使用它们的字面意思,你必须使用反斜杠来避开它们

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

您可以在JSFIDLE上执行相同的操作,但使用的是普通变量,而不是选择器[i]。cssTextShow所有相关代码。paren是正则表达式中的特殊字符,您是否正确转义了它们?为什么要更改sourcevalue?结果是temp[i]。是你编的@不,我外婆this@gaurav:看起来她比你更了解:你能在JSFIDLE上做同样的事情吗,但使用的是琐碎的变量,而不是选择器[i]。cssTextShow所有相关代码。paren是正则表达式中的特殊字符,您是否正确转义了它们?为什么要更改sourcevalue?结果是temp[i]。是你编的@不,我外婆this@gaurav当前位置她似乎比你更了解: