mysql时间戳格式的Javascript regex不起作用

Javascript regex for mysql time stamp format not working

本文关键字:regex 不起作用 Javascript 时间戳 格式 mysql      更新时间:2023-09-26

我需要识别字符串是否具有正确的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");
}

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

此日期格式的正则表达式为:('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");
    }

您的方法中有两个错误:

  • 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");
 }

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

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替换锚点。