RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
其中sourcevalue = rgb(255,0,0)
和targetvalue = #FFFFFF
,但sourcevalue
不targetvalue
代替,为什么呢?正则表达式.replace()不工作
RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
其中sourcevalue = rgb(255,0,0)
和targetvalue = #FFFFFF
,但sourcevalue
不targetvalue
代替,为什么呢?正则表达式.replace()不工作
因为sourcevalue是一个正确的Javascript正则表达式,但它不会像您期望的那样工作。正则表达式中有特殊字符,如()括号。它们用于对正则表达式的部分进行分组。与他们的“文字”用它们meaing你就必须使用反斜杠
逃脱他们var RegEx = /rgb\(255,0,0\)/gi;
谢谢你的回答 – gaurav
很有可能是因为你没有正确转义括号:
var sourcevalue = "rgb\\(255,0,0\\)";
括号用于分组/回引用匹配。如果你想匹配他们字面上,你必须用\
逃脱他们。由于sourcevalue
是一个字符串,并且\
也是字符串中的转义字符,所以必须转义反斜杠才能创建一个字符。
否则,表达式将匹配rgb255,0,0
而不是rgb(255,0,0)
。
谢谢你的回答 – gaurav
你可以做同样的上的jsfiddle但琐碎的变量,而不是'选择器[I] .cssText' – zerkms
显示所有相关码。 Parens是正则表达式中的特殊字符,你是否正确地逃脱了它们? – Jon
为什么'sourcevalue'会被改变?结果是'temp [i]'。你编码! – leppie