Javascript正则表达式为mysql时间戳格式无法正常工作

时间:2016-04-29 12:31:29

标签: javascript regex

我需要识别字符串是否在javascript中具有正确的mysql DB时间戳格式。我写了这个正则表达式:

var regex = /([0..9]{4})-([0..9]{2})-([0..9]{2}) ([0..9]{2}):([0..9]{2}):([0..9]{2})/;

但是当与字符串

一起使用时
var s = "2014-09-08 08:02:17";
if (regex.test){
   console.log("OK");
}

它不起作用。谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:2)

此日期格式的正则表达式为:(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})

这里有一个JsFiddle:https://jsfiddle.net/2vh23Lmt/

    var string = "2014-09-08 08:02:17";
    var re = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/g;
    if (re.test(string)) {
        console.log("Valid");
    } else {
        console.log("Invalid");
    }

答案 1 :(得分:1)

您的方法中有2个错误:

  • a)字符类[0..9]不正确(应为[0-9]);
  • b)未在regex.test函数调用
  • 中指定测试的字符串
 var regex = /[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/g;
 var s = "2014-09-08 08:02:17";
 if (regex.test(s)){
    console.log("OK");
 }

答案 2 :(得分:0)

添加锚点并将..替换为-。因为字符类中的-(不是第一个或最后一个)应该像范围量词一样。

var regex = /^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})$/;

和锚,是的,这是必须的。否则,您的正则表达式应与此54632014-09-08 08:02:173563匹配。锚点将完全匹配,如果您不想进行完全匹配,则可以用\b替换锚点。