下面的表达式:两位数的正则表达式Patterm比赛中的JavaScript
targetString = targetString.replace(parenthesizedRegEx, "$3$1$11");
其中parenthesizedRegEx是一个有效的括号内的正则表达式,替换匹配的文本用字符串,它是第三个项目的串联,第一项,第一个项目和文字“1”。就好像它忽略了“两位数”括号项目索引“$ 11”并将其视为“$ 1”和字面值“1”。
是否有一些应该使用的逃逸或其他分离?
此结果发生在FF和IE9中。
感谢您的帮助。我希望答案是令人尴尬的简单!
编辑更新:
我做了jfiddle全面展示问题。我正在使用的正则表达式包含负面预测声明。看来,如果我包含断言的所有开放参数,它就会失败。如果我没有包含插入的开放零件,它也会失败。但是,如果我包括断言的初始开局准则之外的所有内容,它就会起作用。我知道用(?:...)组成的团队没有编号。但似乎人们必须在断言中包括所有其他公开的参与者,以便正确计数。所以你会在jfiddle中看到$ 11不起作用,但$ 10却起作用。
感谢您看这个。
在正则表达式*中至少有11个组时,使用替换字符串中的$ 11'对我有效。您应该发布正则表达式本身。 – Pointy 2013-03-07 14:32:55
我想你没有匹配'$ 11'。你可以玩:'“1234567890”.replace(/ ^(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d) (\ d)/,“$ 10”)。在我的情况下,它可以在所有浏览器中完美运行。 – VisioN 2013-03-07 14:36:01
请参阅编辑更新。正则表达式中确实有11个组,但其中一个组发起负向前瞻断言。这个断言的开端显然不应该被计算,但在断言中应该是所有其他的变量。 – 2013-03-07 19:04:26