在 Javascript 中,为什么
/^(\d{1}){3}$/.exec(123)
返回["123", "3"]
,但是
/^(\d{1})$/.exec(123)
返回null
而不是["3"]
.
另外,为什么第一个表达式返回3
,1
后面的数字是什么时候^
?
在 Javascript 中,为什么
/^(\d{1}){3}$/.exec(123)
返回["123", "3"]
,但是
/^(\d{1})$/.exec(123)
返回null
而不是["3"]
.
另外,为什么第一个表达式返回3
,1
后面的数字是什么时候^
?
注意到这\d{1}
等同于\d
,
/^(\d{1}){3}$/
可以简化为
/^(\d){3}$/
意思是
括号中\d
定义了一个捕获组。正如这里和这里所解释的,当你重复一个捕获组时,通常的实现只保留最后一次捕获。
这就是为什么最终的结果是
[
"123", // the whole matched string
"3", // the last captured group
]
/^(\d{1})$/
可以再次简化为
/^(\d)$/
意思是
作为123
一个三位数的字符串,它与正则表达式不匹配,因此结果为null
.