了解基本Javascript正则表达式
在Javascript中,为什么了解基本Javascript正则表达式,javascript,regex,Javascript,Regex,在Javascript中,为什么 /^(\d{1}){3}$/.exec(123) 返回[“123”,“3”],但 /^(\d{1})$/.exec(123) 返回null而不是[“3”] 另外,当1是^后面的数字时,为什么第一个表达式返回3?第一种情况 注意到\d{1}仅相当于\d /^(\d{1}){3}$/ 可以简化为 /^(\d){3}$/ /^(\d)$/ 也就是说 字符串的开头 匹配一个三位数的字符串 结束 \d周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通
/^(\d{1}){3}$/.exec(123)
返回[“123”,“3”]
,但
/^(\d{1})$/.exec(123)
返回null
而不是[“3”]
另外,当1
是^
后面的数字时,为什么第一个表达式返回3
?第一种情况
注意到\d{1}
仅相当于\d
/^(\d{1}){3}$/
可以简化为
/^(\d){3}$/
/^(\d)$/
也就是说
- 字符串的开头
- 匹配一个三位数的字符串
- 结束
\d
周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通常的实现只保留最后一次捕获
这就是为什么最终的结果是
[
"123", // the whole matched string
"3", // the last captured group
]
第二种情况 可以再次简化为
/^(\d){3}$/
/^(\d)$/
也就是说
- 字符串的开头
- 匹配一个数字
- 结束
123
是一个三位字符串,它与正则表达式不匹配,因此结果是null
第一种情况
注意到\d{1}
仅相当于\d
/^(\d{1}){3}$/
可以简化为
/^(\d){3}$/
/^(\d)$/
也就是说
- 字符串的开头
- 匹配一个三位数的字符串
- 结束
\d
周围的括号定义了一个捕获组。如前所述,当您重复捕获组时,通常的实现只保留最后一次捕获
这就是为什么最终的结果是
[
"123", // the whole matched string
"3", // the last captured group
]
第二种情况 可以再次简化为
/^(\d){3}$/
/^(\d)$/
也就是说
- 字符串的开头
- 匹配一个数字
- 结束
由于
123
是一个三位字符串,它与正则表达式不匹配,因此结果是null
,因为正则表达式就是这么说的。这是超基本的正则表达式语法;您应该查阅参考资料,而不是StackOverflow。答案与^
和$
锚定相关。。。谷歌吧!在Sniffer编辑之后,这似乎是一个值得回答的问题-它可以继续解释正则表达式的重复部分(the{3}
)和捕获组(为什么第一个正则表达式在结果中包含“3”)。@Douglas问题在于,它不是问为什么第一个表达式匹配3而不是1-只是对正则表达式缺乏理解。这个问题很容易被互联网上的许多初学者教程所回答。对不起,我的英语不好,但是为什么在第一个正则表达式中也会返回3,因为3不跟随^?因为正则表达式是这么说的。这是超基本的正则表达式语法;您应该查阅参考资料,而不是StackOverflow。答案与^
和$
锚定相关。。。谷歌吧!在Sniffer编辑之后,这似乎是一个值得回答的问题-它可以继续解释正则表达式的重复部分(the{3}
)和捕获组(为什么第一个正则表达式在结果中包含“3”)。@Douglas问题在于,它不是问为什么第一个表达式匹配3而不是1-只是对正则表达式缺乏理解。这个问题很容易被互联网上的许多初学者教程所回答。对不起,我的英语不好,但是为什么在第一个正则表达式中也返回3,因为3不跟随^?