任何人都可以告诉我这个regEx是否有问题:
/^(0[1-9]|1[0-2])\/(19|20)\d{2}$/
我试图通过MM / DD / YYYY为日期创建一个regEx,我认为这会削减它但是由于某种原因它仍然说正确的日期是无效的。
例如02/15/2015,01/31/2013等。任何应该有效的日子都没有被验证,所以我认为这个regEx没有做我希望它做的事情......
有人会看一下它,看看我可能搞砸了吗?
答案 0 :(得分:3)
这适用于RegexBuddy,使用它的默认PCRE方言:
(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)[0-9]{2}
成功匹配
01/01/2014
12/31/2000
07/15/1955
01-01-2012
12.22.1922
<失败(正确)
13/01/2001
12/33/2015
01/01/1200
15.36.1948
01.50.1922
答案 1 :(得分:-1)
可能这不应该由正则表达式解决,主要是由于闰年引起的并发症。无论如何,通过接受2月29日的所有年份并仅考虑20和21世纪的日期来忽略这个问题,我们有(pcre语法;分成多行以便于理解。通过消除一行中的所有前导空格折叠成一行):
/^
(
(0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01])
| (0[469]|11)\/(0[1-9]|[12][0-9]|30)
| 02\/(0[1-9]|[12][0-9])
)
\/(19|20)\d{2}
$/x