猿问

正则表达式以匹配有效日期

正则表达式以匹配有效日期

我正在尝试编写一个验证日期的正则表达式。正则表达式需要匹配以下内容

  • M/D/YYYY
  • 毫米/年
  • 个位数月可以从前导零开始(例如:03/12/2008)
  • 个位数的天数可以从前导零开始(例如:3/02/2008)
  • 不能包括2月30日或2月31日(如:2/31/2008)

到目前为止

^(([1-9]|1[012])[-/.]([1-9]|[12][0-9]|3[01])[-/.](19|20)\d\d)|((1[012]|0[1-9])(3[01]|2\d|1\d|0[1-9])(19|20)\d\d)|((1[012]|0[1-9])[-/.]
(3[01]|2\d|1\d|0[1-9])[-/.](19|20)\d\d)$

这是正确的匹配,但仍然包括2/30/2008和2/31/2008。

有人有更好的建议吗?

编辑:我发现答案论RegExLib

^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/]
(([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$

它匹配遵循MM/DD/YYYY格式的所有有效月份。

谢谢大家的帮助。


胡说叔叔
浏览 2372回答 3
3回答

达令说

这不是正则表达式的适当用法。你最好用[0-9]{2}/[0-9]{2}/[0-9]{4}然后用高级语言检查范围。
随时随地看视频慕课网APP
我要回答