使用正则表达式进行日期验证

Date validation with regular expression

本文关键字:日期 验证 正则表达式      更新时间:2023-09-26

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

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

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

试试这个:

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'));

  1. 您可以使用'd{1,2}选择1或2位数字。

  2. 最后一个hypen/正斜杠组中缺少方括号。

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

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

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