我需要识别字符串是否在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");
}
它不起作用。谁能告诉我我做错了什么?
答案 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个错误:
[0..9]
不正确(应为[0-9]
); 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
替换锚点。