我的输入模式不起作用

时间:2018-01-22 13:15:57

标签: html regex

我创建了一个用于检查日期格式的正则表达式(01-01-0000到31-12-9999)。 我尝试了一个示例正则表达式,它可以工作,所以我的正则表达式有问题,但是当我在调试器(regexr)中尝试它时它运行得很好。

我错过了什么?

([0]{1}[1-9]{1}|[1-2]{1}[0-9]{1}|[3]{1}[0-1]{1})(\-)([0]{1}[1-9]{1}|[1]{1}[0-2]{1})(\-)\d{4}

编辑后的新正则表达式:

(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}

我使用html输入类型文本,并将正则表达式放在pattern =" my pattern"。

提前致谢(:

编辑:根据Casimir et Hippolyte的评论修正了正则表达式,现在它可以正常工作。

1 个答案:

答案 0 :(得分:0)

您的正则表达式看起来没问题,至少它会捕获您的两个样本日期(在regex101.com上测试)。

您可以稍微简化一下:

  • 围绕一个字符不需要[...](例如,将[0]更改为0)。
  • 无需在短划线周围捕捉群组(例如,将(-)更改为-)。
  • 奇怪的是,您使用捕获组的日期和月份,但是您 没有年份字段(我在下面的例子中添加了它)。

请尝试以下正则表达式:

(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-(\d{4})

然而,目前尚不清楚,你是否真的需要捕捉群体。