关于正则表达式中的"或"

对于正则表达式大家都应该是比较熟悉的..所以说 ' | ' 这个符号相信大家应该都不陌生..

下面就说一下我在最近书写正则的或中遇到的问题, 算是对自己问题的记录..

问题 : 用正则判断1-100之间的整数

最初解 ( 错误版本 ) : /^[1-9]\d?|100$/


这个看起来一切正常...但是...


这个就比较纠结了...于是有了下面的版本...

最终解 (正确版本) : /^([1-9]\d?|100)$/


嗯..这个看起来正常了..

总结 : 最初虽然知道正则的"或"如果不加括号的话会直接相当于在正则串的首尾添加括号( xxx|xxx  - >  (xxx|xxx) )..但是没有仔细考虑过开始符 ( ^ ) 和结束符 ( $ ) 

在这种情况下 /^[1-9]\d?|100$/ 会相当于 /(^[1-9]\d?|100$)/ ..也就是 ^[1-9]\d? 和 100$ 如果能匹配成功则返回true..所以说上面的100000000以1到9之间的数开头..可以匹配..而abc100以100结尾也可以匹配..因此都返回true..

总结成一句话就是正则的"或"不加括号会把正则分成开始(纯开始)到 ' | ' 和 ' | ' 到结尾(纯结尾)两部分..

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值