正则表达式验证YYYYMMDD

时间:2016-07-20 09:05:19

标签: html regex forms

所以我需要一些正则表达式来验证表单中的输入。 我相信你现在可以将正则表达式直接放到HTML中吗? (我该怎么做?)

我发现了这一点,但我不确定这是否是我想要的?

"(((\\d\\d)(0[48]|[2468][048]|[13579][26])|([02468][048]|[13579][26])(00))(02)([012]\\d))|(\\d\\d([02468][1235679]|[13579][01345789])(02)([01]\\d|2[012345678]))|(\\d\\d\\d\\d((0[13578]|1[02])([012]\\d|3[01])|((0[46]|11)([012]\\d|30))))"

所以,第一位:

4位数,小于x(2017)(需要轻易更改?)

第二位:

2位数,介于01和12之间

第三位:

2位数,介于01和31之间(我不关心每月的变化)

2 个答案:

答案 0 :(得分:3)

我相信应该这样做:

(201[0-7]|200[0-9]|[0-1][0-9]{3})(1[0-2]|0[1-9])(3[01]|[0-2][1-9]|[12]0)

以下是github_issue的示例。

故障:

(201[0-7]|200[0-9]|[0-1][0-9]{3})匹配:

  • 201后跟0到7之间的数字(2010..2017)
  • 200后跟0到9之间的数字(2000..2009)
  • 零或一,后跟0到9之间的三位数字(0000..1999)。如果您不希望显示1000岁以下的年份,您只需执行(201[0-7]|200[0-9]|1[0-9]{3})

注意:如果您希望在2020年之前匹配某些内容,则可以将此细分更改为(202[0-7]|20[01][0-9]|[0-1][0-9]{3}),允许从0000 ...2027

下一部分(1[0-2]|0[1-9])匹配:

  • a 1后跟0到2之间的数字(10..12)
  • 零,后跟1到9之间的数字(01..09)

最后一个(3[01]|[0-2][1-9]|[12]0)匹配:

  • a 3,然后是0或1(30..31)
  • 0到2之间的数字,后跟1到9之间的数字(01..29)
  • 2或1后跟0,因为上面的规则不允许数字以零结尾(关闭00)。

答案 1 :(得分:0)

我觉得Dencker的答案中存在一个小问题,以适应当月10日和20日。

(201[0-7]|200[0-9]|[0-1][0-9]{3})(1[0-2]|0[1-9])(3[01]|[0-2][1-9]|[12][0])

**无法评论Dencker的帖子(需要50点评分才能发表评论)