如何按照mm/yyyy
格式验证用户的日期输入,yyyy
范围是2002
到2030
。因此,月份应该在1
到12
之间,而2002
和2030
以下的所有年份都无效。这是我目前的正则表达式:
^(0[1-9]|1[012])[- /.](20)\d\d$
答案 0 :(得分:2)
既然您被迫使用正则表达式,那么您就是:
^(0[1-9]|1[012])[- /.](20(?:0[2-9]|[12]\d|30))$
它类似于您撰写的月份验证模式 - 0[2-9]
匹配2002年至2009年,[12]\d
匹配2010年至2029年,30
匹配2030年。
答案 1 :(得分:0)
您可以使用checkdate()函数验证公历日期;但是,这要求您使用日期时间/日期格式,这对于确保人们不会执行以下操作非常有用:35/02/2014
但是,这样的事情可以起作用吗?
([0-2][0-9]|31)\/(0[1-9]|1[0-2])\/(200[2-9]|20[1-2][0-9]|2030)
然后将字符串转换为DateTime对象并运行checkdate()函数来检查它的格里高利?
答案 2 :(得分:0)
^(0[1-9]|(1[0-2]+)+)\/(20(0[2-9]|([1-2][0-9])|30))$
您可以使用此模式。你也可以在这里测试一下。 http://regexr.com/3a60s
故障:
^(
0[1-9]|(1[0-2]+)+)
\/
(20(0[2-9]|([1-2][0-9])|30)
)$
说明:
/
" 匹配从20开始的3年套装。
0[2-9]
[1-2][0-9]
30
答案 3 :(得分:0)
您可以通过模式检查..这样
<input type="text" pattern="^(0[1-9]|1[012])[- /.](20(?:0[2-9]|[12]\d|30))$" />
&#13;