在某些\1
中可以使用并在某些$1
在线正则表达式构建器中。
两种方式都适用于每个javascript引擎吗?
答案 0 :(得分:3)
只有一种方式适用于JavaScript,如果反向引用位于正则表达式(\n
)或替换值($n
)中,则它会有所不同。
[在正则表达式中]
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
更好地解释了这一点