如何在这种情况下使用此正则表达式验证日期?
var regex = new RegExp(/[\d-: ]/, 'g');
console.log(regex.test(updated_post_datetime));
输入将是 2011-03-29 12:22somestring 在这种情况下它必须返回false,但它返回true。
答案 0 :(得分:2)
如果你是添加^
,+
和$
它将起作用,其中
"^" = from the beginning of the line
"+" = one or more of chosen character
"$" = to end of line
var regex = /^[\d-: ]+$/;
console.log(regex.test("2011-03-29 12:22somestring"));
console.log(regex.test("2011-03-29 12:22"));
console.log(regex.test("2011-03-30 12:22"));
console.log(regex.test("2011-04-01 12:22"));
console.log(regex.test("2011-05-19 12:22"));
请注意,这将返回true,例如123
也是如此,如果您打算确认它确实是一个约会,那么您需要以下类似的东西:
答案 1 :(得分:0)
另一种方法:
console.log(!isNaN(Date.parse(updated_post_datetime)));
答案 2 :(得分:0)
你可以尝试
var regex = new RegExp(/^(?:[12]\d{3})-(?:(0[1-9])|(1[0-2]))-(?:([0-2][1-9])|(3[0-1]))\s+(([01][1-9])|(2[0-3])):([0-5][0-9])|(2[0-3])/, 'g');
console.log(regex.test(updated_post_datetime));
或者更好地尝试为它创建一个新日期
var test1 = '2011-03-29 12:22';
console.log(test1 + ' test is: ' + isDate(test1));
var test2 = '2011-02-29 25:61:73';
console.log(test2 + ' test is: ' + isDate(test2));
function isDate(value) {
if (!value) return false;
try {
var dt = new Date(value);
return dt instanceof Date && !isNaN(dt.valueOf())
}
catch (e) {
return false;
}
}
因为仅使用正则表达式验证日期是不够的