在 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.