我正在尝试以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";
}
}
答案 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}/;
修改强>
请注意,上述正则表达式不正确(即它可以批准无效日期)。我想简单的回答是,不要使用正则表达式来验证日期时间。使用某些日期时间库,例如momentjs或datejs。逻辑太多了。例如,你如何处理闰年,不同的月份有不同的可能天数等等。它只是一个痛苦。使用可以解析它的库,如果它不能解析,它不是日期时间。相信图书馆。
然而,你可以接近这样的事情
re = /^\d{4}\/(10|11|12|\d)\/((1|2)?\d|30|31)$/;
此外,如果您想熟悉正则表达式,请下载Expresso