如何验证范围之间的有效月份/年份


How to validate a valid month / year between a range

如何验证用户按照格式输入的日期输入mm/yyyy以及yyyy范围从20022030。因此,月份应该介于 112 之间,低于 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

故障:

^(

  1. 0[1-9]|(1[0-2]+)+)
  2. '/
  3. (20(0[2-9]|([1-2][0-9])|30)

)$

解释:

  1. 01 到 09 或 10 到 12 之间的比赛。
  2. 匹配您的"/"
  3. 比赛 3 年组从 20 开始。

    • 2002年至2009年与0[2-9]
    • 或 2010 年至 2029
    • 年,[1-2][0-9]
    • 或 2030,与文字30匹配

你可以按模式检查..

这样

<input type="text" pattern="^(0[1-9]|1[012])[- /.](20(?:0[2-9]|[12]'d|30))$" />