首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JS中使用regex检查日期格式

在JS中使用regex检查日期格式
EN

Stack Overflow用户
提问于 2015-06-11 10:48:38
回答 2查看 75关注 0票数 1

我的问题很简单,但需要工作。我尝试了很多regex表达式来检查我的约会时间是否正常,但是尽管我确信我的regex预发布是正确的,但它总是以警觉的方式返回给我。你能检查一下我的密码吗?

代码语言:javascript
复制
validateForLongDateTime('22-03-1981')



function validateForLongDateTime(date){
    var regex=new RegExp("/^\d{2}[.-/]\d{2}[.-/]\d{4}$/");
    var dateOk=regex.test(date);
    if(dateOk){
      alert('ok');

    }else{
        alert('notok');
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-11 10:53:33

该regex至少有两个问题:

  • 它没有逃脱正切斜杠。
  • 字符类中的连字符未转义,并形成一个范围(只匹配./),这不是这里所必需的。

“固定”正则表达式如下所示:

代码语言:javascript
复制
/^\d{2}[.\/-]\d{2}[.\/-]\d{4}$/

请参阅演示

但是,您不能用它验证日期,因为它也将与37-67-5734匹配。

下面是带有分隔符字符类的我的爱意版

代码语言:javascript
复制
^(?:(?:31([\/.-])(?:0?[13578]|1[02]))\1|(?:(?:29|30)([\/.-])(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29([\/.-])0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])([\/.-])(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
票数 2
EN

Stack Overflow用户

发布于 2015-06-11 11:26:59

这样,您可以在1至31和1至12个月之间验证日期。

代码语言:javascript
复制
var regex = /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)\d\d$/

请参阅这里的演示,https://regex101.com/r/xP1bD2/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30778695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档