请问这两个正则表达式有什么区别

查看:113
本文介绍了请问这两个正则表达式有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

/^([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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆