正则表达式条件匹配

请问正则表达如何匹配多条件?

例如:想匹配2017全年月日 , 就是 20170101到20171231

又想匹配2018年8月份之前的日期 就是 20180101到20180731

求解答。

阅读 2.6k
3 个回答

/^(2017(0\d|10|11|12)|2018(0[1-7]))([0-2][0-9]|30|31)$/

不好匹配吧? 有的月28 30天的 闰年这种的。。
百度搜的,你改改。。

3.完整的年月日正则表达式
^((([0-9]{2})(0[48]|[2468][048]|[13579][26]))   #闰年,能被4整除但不能被100整除
|((0[48]|[2468][048]|[13579][26])00)   #闰年,能被400整除
-02-29)  #匹配闰年2月29日这一天。如果不是这一天,则由下面式子继续匹配验证。 
|([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}) #平年(0001-9999)
-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))   #月日,1、3、5、7、8、10、12月有31天
|((0[469]|11)-(0[1-9]|[12][0-9]|30))   #月日,4、6、9、11月有30天
|(02-(0[1-9]|[1][0-9]|2[0-8])))   #平年2月只有28天,月日表示为【02-01至02-28】
(2017[0-1][0-9].{2}|20180[1-7].{2})

语句重点是 (表达式1|表达式2)

意思是匹配表达式1或者匹配表达式2

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题