在Javascript中,为什么
/^(\d{1}){3}$/.exec(123)
返回["123", "3"]
,但
/^(\d{1})$/.exec(123)
返回null
而不是["3"]
。
另外,当3
是1
后面的数字时,为什么第一个表达式会返回^
?
答案 0 :(得分:4)
注意\d{1}
仅相当于\d
,
/^(\d{1}){3}$/
可以简化为
/^(\d){3}$/
表示
\d
周围的括号定义了一个捕获组。正如here和here所解释的,当您重复捕获组时,通常的实现仅保留最后一次捕获。
这就是最终结果
的原因[
"123", // the whole matched string
"3", // the last captured group
]
/^(\d{1})$/
可以再次简化为
/^(\d)$/
表示
将123
设为三位数字符串,它与正则表达式不匹配,因此结果为null
。