我的正则表达式在接受格式为 YYYY-MM-DD 的日期时遇到问题

所以我有一个正则表达式,我通过另一篇文章找到了以 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");

    }

}

我在这里遗漏了一些语法错误还是我的正则表达式错误?提前致谢,如果您需要更多信息,请告诉我,我会更新帖子。


HUX布斯
浏览 202回答 1
1回答

慕容森

您需要对字符串中的反斜杠进行转义,因此它们将按字面传递给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');
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript