Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式进行日期验证_Javascript_Regex - Fatal编程技术网

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

Javascript 使用正则表达式进行日期验证,javascript,regex,Javascript,Regex,我正在尝试构建一个正则表达式来检查日期是否为以下格式(11-2-07、1-25-2007或01/25/2007)。我的正则表达式如下所示: /^([\d{2}\d{1}])([\-\/])([\d{2}\d{1}])(\-\/)([\d{2}\d{4}])$/ 当我以所需格式在日期中输入日期时,方法test()实际上返回false。你能帮我找出错误吗 您可以使用\d{1,2}选择1或2个数字 最后一个催眠/正斜杠组中缺少方括号 最后一组应该是(\d{2}|\d{4}) 无需在字符类内转义正斜杠

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

/^([\d{2}\d{1}])([\-\/])([\d{2}\d{1}])(\-\/)([\d{2}\d{4}])$/
当我以所需格式在日期中输入日期时,方法test()实际上返回false。你能帮我找出错误吗

  • 您可以使用
    \d{1,2}
    选择1或2个数字

  • 最后一个催眠/正斜杠组中缺少方括号

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

  • 无需在字符类内转义正斜杠

    /^(\d{1,2})([\-/])(\d{1,2})([\-/])(\d{2}|\d{4})$/
    
  • 试试这个:

    var re = /^([0123]?[\d])([\-\/])([0123]?[\d])([\-\/])((19|20)?\d\d)$/;
    
  • 第一组和第三组匹配日期和月份,只能从
    0
    1
    2
    3
    开始。如果您知道确切的日期格式,您可以从月份组中删除
    3
    ,或者对月份组使用
    (0?[1-9]| 1[012])
    ,对日组使用
    (0?[1-9]|[12][0-9]| 3[01])
  • 第二组和第四组匹配连字符和斜杠分隔符
  • 最后一组匹配从
    19
    20
    开始的年份
  • var re=/^([0123]?[\d])([\-\/])([0123]?[\d])([\-\/])((19 | 20)?\d\d)$;
    控制台日志('01-02-1999',重新测试('01-02-1999');
    控制台日志('01/02/1999',重新测试('01/02/1999');
    控制台日志('41-02-1999',重新测试('41-02-1999');
    
    控制台日志('01/42/1999',重新测试('01/42/1999')
    [\d{2}\d{1}]
    [\d{2}\d{4}]
    只匹配一个字符,您的意思是使用
    (a | b)
    ?另外,您的第一个有效日期示例并没有提供足够的信息来了解日-月顺序您考虑过使用moment.js吗?有一个isValid()函数。简单的方法是:忘记使用正则表达式,直接使用它。如果你想构建正则表达式-用这个方法来尝试它们,你可以构建你的正则表达式,并在运行时进行测试