繁体   English   中英

使用正则表达式验证日期

[英]Date validation with regular expression

我正在尝试构建一个正则表达式,它检查日期是否采用以下格式(11-2-07,1-25-2007或01/25/2007)。 我的正则表达式如下所示:

/^([\d{2}\d{1}])([\-\/])([\d{2}\d{1}])(\-\/)([\d{2}\d{4}])$/

当我以所需格式在日期中输入日期时,方法test()实际上返回false。 你能帮我找到错误吗?

  1. 您可以使用\\d{1,2}选择1或2位数的出现次数。

  2. 最后的hypen / forward斜杠组中缺少方括号。

  3. 最后一组应该是(\\d{2}|\\d{4})

  4. 无需转义字符类中的正斜杠。

     /^(\\d{1,2})([\\-/])(\\d{1,2})([\\-/])(\\d{2}|\\d{4})$/ 

试试这个:

var re = /^([0123]?[\d])([\-\/])([0123]?[\d])([\-\/])((19|20)?\d\d)$/;
  1. 第一组和第三组匹配日和月,其可以就只能从0123 如果你知道确切的日期格式,你可以从月份组中删除3 ,或者使用(0?[1-9]|1[012])月份组和(0?[1-9]|[12][0-9]|3[01])为日组。
  2. 第二组和第四组匹配连字符和斜杠分隔符。
  3. 最后一组匹配从1920开始的年份。

 var re = /^([0123]?[\\d])([\\-\\/])([0123]?[\\d])([\\-\\/])((19|20)?\\d\\d)$/; console.log('01-02-1999', re.test('01-02-1999')); console.log('01/02/1999', re.test('01/02/1999')); console.log('41-02-1999', re.test('41-02-1999')); console.log('01/42/1999', re.test('01/42/1999')); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM