以下表达式:
targetString = targetString.replace(parenthesizedRegEx, "$3$1$11");
其中parenthesizedRegEx是一个有效的带括号的正则表达式,用一个字符串替换匹配的文本,该字符串是第三个项目,第一个项目,第一个项目和文字“1”的串联。就好像它忽略了“两位数”括号项目索引“$ 11”并将其视为“$ 1”和文字“1”。
是否应该使用一些逃逸或其他分离?
此结果发生在FF和IE9中。
感谢您的帮助。我希望答案简直令人尴尬!!
修改更新:
我做了一个jfiddle来全面展示这个问题。我正在使用的正则表达式包含一个负面的先行断言。似乎当我为断言包含所有开放的parens时,它失败了。如果我没有包含任何插入的开放parens,它也会失败。但是,如果我包括除断言的初始开头之外的所有内容,那么它就可以了。我知道用(?:...)形成的组没有编号。但似乎人们必须在断言中包含所有其他开放的parens以使计数正确。所以你会在jfiddle中看到11美元不起作用但10美元不起作用。
感谢您查看此内容。
答案 0 :(得分:0)
这对我来说很好用:
var regex = /^(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w).*$/i;
alert("abcdefghijklmno".replace(regex,"$3$1$11"));
关键是,如果要定位其中的特定位置,则需要将整个字符串与正则表达式匹配。尝试从上面的正则表达式中取出.*
,你会发现它打破了替换。