为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUX布斯 2021-12-12 15:47:09
所以我有一个正则表达式,我通过另一篇文章找到了以 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');


查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信