所以我有一个正则表达式,我通过另一篇文章找到了以 YYYY-MM-DD 格式验证日期的正则表达式:[12]\d{3}-(0[1-9]|1[02])-(0[ 1-9]|[12]\d|3[01])。我在网站https://www.regular-expressions.info/javascriptexample.html上检查了它,它在我需要它工作的所有情况下都有效,但在我自己的页面上它总是返回 false。这是我的代码:function checkValues(uid, displayTitle, message, date) { var errList = document.getElementById("errors"); errList.innerHTML = ""; var errFound = false; var regex = new RegExp('[12]\d{3}-(0[1-9]|1[02])-(0[1-9]|[12]\d|3[01])'); if (!date.match(regex)) { displayError("Date should follow the format: YYYY-MM-DD"); errFound = true; } if (!errFound) { displayError("congrats"); }}我在这里遗漏了一些语法错误还是我的正则表达式错误?提前致谢,如果您需要更多信息,请告诉我,我会更新帖子。
1 回答
慕容森
TA贡献1853条经验 获得超18个赞
您需要对字符串中的反斜杠进行转义,因此它们将按字面传递给RegExp构造函数。
这就是为什么最好使用 RegExp 文字而不是new RegExp在您不动态构建 regexp 时。
function checkValues(date) {
var regex = new RegExp('[12]\\d{3}-(0[1-9]|1[012])-(0[1-9]|[12]\\d|3[01])');
if (!date.match(regex)) {
console.log("Date should follow the format: YYYY-MM-DD");
} else {
console.log("congrats");
}
}
checkValues('2019-01-01');
checkValues('2019-11-21');
checkValues('2019-10-31');
checkValues('1234-56-78');
添加回答
举报
0/150
提交
取消