如何使用js检查正则表达式中的日期验证?

时间:2017-01-13 07:13:15

标签: javascript regex date

我正在尝试以js(“yyyy / mm / dd”)格式验证日期。谷歌搜索后,我发现其他日期格式已检查,但我无法使用此格式。

任何一个PLZ都可以帮助我。

这是我的代码。

function dateChecker()
{
    var date1, string, re;
    re = new RegExp("\d{4}/\d{1,2}/\{1,2}");

    date1 = document.getElementById("visitDate").value; 
    if(date1.length == 0)
    {
        document.getElementById("showError").innerHTML = "Plz Insert Date";
        document.getElementById("showError").style.color = "red";
    }
    else if(date1.match(re))
    {
        document.getElementById("showError").innerHTML = "Ok";
        document.getElementById("showError").style.color = "red";
    }
    else
    {
        document.getElementById("showError").innerHTML = "It is not a date";
        document.getElementById("showError").style.color = "red";
    }

}   

2 个答案:

答案 0 :(得分:1)

试试这个:

var date = "2017/01/13";
var regex = /^[0-9]{4}[\/][0-9]{2}[\/][0-9]{2}$/g;
console.log(regex.test(date));    // true
console.log(regex.test("13/01/2017")); //false
console.log(regex.test("2017-01-13")); // false

答案 1 :(得分:0)

如果使用new RegExp,则必须在生成的正则表达式对象上调用compile。

re = new RegExp("\d{4}/\d{1,2}/\d{1,2}");
re.compile();

或者你可以用这种方式编写正则表达式,不需要调用compile

re = /\d{4}\/\d{1,2}\/\d{1,2}/;

修改

请注意,上述正则表达式不正确(即它可以批准无效日期)。我想简单的回答是,不要使用正则表达式来验证日期时间。使用某些日期时间库,例如momentjsdatejs。逻辑太多了。例如,你如何处理闰年,不同的月份有不同的可能天数等等。它只是一个痛苦。使用可以解析它的库,如果它不能解析,它不是日期时间。相信图书馆。

然而,你可以接近这样的事情

re = /^\d{4}\/(10|11|12|\d)\/((1|2)?\d|30|31)$/;

此外,如果您想熟悉正则表达式,请下载Expresso