如何验证用户按照格式输入的日期输入mm/yyyy
以及yyyy
范围从2002
到2030
。因此,月份应该介于 1
到 12
之间,低于 2002
的所有年份都无效,2030
无效。这是我当前的正则表达式:
^(0[1-9]|1[012])[- /.](20)'d'd$
由于您被迫使用正则表达式,因此您在这里:
^(0[1-9]|1[012])[- /.](20(?:0[2-9]|[12]'d|30))$
它的工作方式类似于您编写的月份验证模式 - 0[2-9]
匹配 2002 到 2009,[12]'d
匹配 2010 到 2029,30
匹配 2030。
您可以使用 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() 函数以检查它是公历的?
^(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)
)$
解释:
- 01 到 09 或 10 到 12 之间的比赛。
- 匹配您的"
/
" 比赛 3 年组从 20 开始。
- 2002年至2009年与
0[2-9]
- 或 2010 年至 2029 年,
- 或 2030,与文字
30
匹配
[1-2][0-9]
- 2002年至2009年与
你可以按模式检查..
这样
<input type="text" pattern="^(0[1-9]|1[012])[- /.](20(?:0[2-9]|[12]'d|30))$" />