我知道javascript“(x)”可以记住模式和匹配,但我有一个问题。 这是我的代码:
var re = /(\w*)(abc)\1\2/;
var str = '123dabc123dabc'
console.log(re.exec(str))
var re = /(\w*)(abc)\1\3/;
var str = '123dabc123dabc'
console.log(re.exec(str)) // this must be null,because "\3" is not the right pattern,but what·s the "\3" ·s match rules in here
我想知道哪个str \3
可以匹配?...
答案 0 :(得分:4)
当引用不存在的捕获组索引时,它引用字符索引。
所以\3
匹配字符??
,索引为3 ^ 8(3 ^ 10或3 ^ 16)
??
因为没有字符映射到此。如果您写了另一个八进制值,比如说\51
,那么您将匹配)
。请注意,如果您(想)使用\48
作为八进制值,这将无效,它将被视为\4
,后跟文字8
它非常类似于使用十六进制时,您可能已经看过\ x30例如......
\x30
匹配字符0,索引为30 ^ 16(48 ^ 10或60 ^ 8)