用正则表达式检查日期

时间:2018-03-31 11:44:56

标签: javascript regex

如何在这种情况下使用此正则表达式验证日期?

var regex = new RegExp(/[\d-: ]/, 'g');
console.log(regex.test(updated_post_datetime));

输入将是 2011-03-29 12:22somestring 在这种情况下它必须返回false,但它返回true。

3 个答案:

答案 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;
    }
}

因为仅使用正则表达式验证日期是不够的