请问这两个正则表达式有什么区别
本文介绍了请问这两个正则表达式有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
/^([0-9]{1,2}|100)$/和/^[0-9]{1,2}|100$/为什么第一个不能匹配100以上的数字?另外请问若要匹配10-100应该怎么改?
解决方案
这个问题挺好的,有一个点是关于优先级的问题,具体关于正则可以看我的梳理,里面也提到了优先级的问题
具体来说就是,
第一个正则匹配的是,匹配一个完整字符串从头到结束,其中从头到结束之间的字符内容满足,要么是个位数,要么是2位数,要么是100,接受前导0(打引号是因为本质是字符串,不是数字在进行正则匹配)
而第二个正则,没有加括号,由于竖线|
优先级低的问题,所以这个表达式本质上类似于/(^[0-9]{1,2})|(100$)/
,所以它表示的是匹配这样一个字符串(注意不是完整从头到尾的,只要里面有就可以),要么以一位或者两位数字开头,匹配获取这一位或者两位数字,要么以100结尾,匹配获取100
也就是说你的第二个正则也是没办法完全匹配到100以上的,比如199
这个字符串去用第二个做匹配,其实匹配到的是19
而不是完整的199
,甚至100
去匹配也是匹配到10
而不是100,因为竖线会短路
至于匹配10到100,无非是改一下最前的那个/^([1-9][0-9]|100)$/
这篇关于请问这两个正则表达式有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文