怎么把两个正则表达式用或的关系一起使用?

(((19)\d{2})|(2000))-(1[0-2]|0?[1-9])-\b(0?[1-9]\b|\b[1-2][0-9]\b|\b3[0-1]\b)

——————————————————————————————————
((2001)-0?[1-8]-\b(0?[1-8]\b|\b[1-2][0-9]\b|\b3[0-1]\b))
第一个是验证日期是否在1900-2000年之间,第二个是验证是否在2000年1月到8月之间。
我把两个正则表达左右括号打起来,用|连接,为什么只能验证第一个,第二个不行,求高人指教

1个回答

当然不能匹配后面的条件了,我们默认的正则匹配模式是“贪婪模式”这里涉及到匹配模式,前面的匹配正确了后面的就不匹配了。你可以分开两个条件分开验证

weixin_42812214
风起时丶丶想你 回复weixin_43691257: 两个正则都错了吧,\b不是匹配边界的吗?我建议不如换算成时间戳比较
一年多之前 回复
liuyongtao201011
ClimberEagle 正则表达式匹配需要注意转移字符,建议看下<<sed修炼系列(四):sed中的疑难杂症>>中正则表达式注意事项
一年多之前 回复
weixin_43691257
weixin_43691257 回复weixin_43691257: 我输入2001-01-01,第一个不符合,应该判断第二个是否符合,为什么直接就跳过第二个了呢
一年多之前 回复
weixin_43691257
weixin_43691257 谢谢你的回复。那就是用两个验证控件吗,那样不是一定会跳出一个不符合吗
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐