【问题标题】:Writing JS regex for YYYY-MM-DD HH:MM [duplicate]为 YYYY-MM-DD HH:MM 编写 JS 正则表达式 [重复]
【发布时间】:2015-01-24 14:10:00
【问题描述】:

我是 JS 新手,我需要验证表单中的日期。日期字段是一个常规文本字段。日期字段的名称称为“日期”。如何使用 JS 中的简单正则表达式验证日期是否来自 YYYY-MM-DD HH:MM 格式?

谢谢

【问题讨论】:

标签: javascript regex


【解决方案1】:

尝试以YYYY-MM-DD HH:MM 格式验证您的日期

   var re = /[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]/;
var str = '2014-02-04 12:34';
var m;

while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}

查看演示:https://www.regex101.com/r/rT6vJ4/1

【讨论】:

【解决方案2】:

你也可以试试这个:

var myRegExp=/^\d{4}-[0-1][0-2]-[0-3]\d\s([0-1][0-9]|2[0-3]):[0-5]\d$/;
var date="2015-01-01 10:10";

if(date.match(myRegExp)){
   console.log("Good format");
}

关于正则表达式的信息:

  • " ^ " : 在字符串的开头断言位置
  • " \d{x} " : 匹配一个数字 x 次
  • " - " :匹配字符 - 字面意思
  • " [range] " : 匹配范围中存在的单个字符
  • “\s”:匹配任意空白字符[\r\n\t\f]
  • “$”:在字符串末尾断言位置

你可以自己测试:http://codepen.io/anon/pen/XJgeeV

[根据大卫·费伯的建议更新]

【讨论】:

  • 这个[0-1][0-2] 只允许以下月份:00(无效)、0102101112。您需要更多类似的东西来验证月份:(0[1-9]|1[0-2]).
  • @DavidFaber 感谢您的建议,我更新了几个月和几天的正则表达式
  • 感谢您详细的回答本。它有助于我理解如何在 js 中编写正则表达式,但你确定吗?您的正则表达式不接受日期 2015-02-01 09:40(这是有效日期)。
  • 嗨,我犯了一个错误,这是正确的正则表达式:^\d{4}-[0-1][0-2]-[0-3]\d\s ([0-1][0-9]|2[0-3]):[0-5]\d$。帖子更新了
  • 匹配 0000-00-00 00:00 但不考虑闰秒。 en.wikipedia.org/wiki/Leap_second
【解决方案3】:

当我用谷歌搜索时,有一些很好的例子,例如Date Form Validation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2011-07-11
    相关资源
    最近更新 更多