什么是使用反向引用的最佳方法?

时间:2014-08-13 08:30:48

标签: javascript regex

在某些\1中可以使用并在某些$1在线正则表达式构建器中。

两种方式都适用于每个javascript引擎吗?

2 个答案:

答案 0 :(得分:3)

只有一种方式适用于JavaScript,如果反向引用位于正则表达式(\n)或替换值($n)中,则它会有所不同。

请参阅MDN Regular Expressions

  

[在正则表达式中] n是一个正整数,[\n指的是对正则表达式中与n括号匹配的最后一个子串的后引用(计数)左括号)。

     

例如,/apple(,)\sorange\1/匹配“苹果,橙子,樱桃,桃子”中的“苹果,橙子”。

     

...

     

模式中的\1\2匹配字符串的最后两个单词。请注意,\1, \2, \n用于正则表达式的匹配部分。 在正则表达式的替换部分中,必须使用语法$1, $2, $n ,例如:'bar foo'.replace( /(...) (...)/, '$2 $1')

那样在JavaScript中的正确方式;不同的正则表达式可能以不同的方式工作,但这与上面所述的JavaScript代码无关。

答案 1 :(得分:0)

反向引用,不能在character class内使用。像\1这样的正则表达式中的(a)[\1b]要么是错误,要么是不必要的转义文字1.在JavaScript中它是octal escape

Using Regular Expressions with JavaScript - regular-expressions.info

更好地解释了这一点