jquery - 尽管格式正确,但日期与 RegExp 不匹配

标签 jquery regex

我在使用正则表达式和 jquery 格式化日期输入时遇到了问题。我设法将范围缩小到这个测试代码:

function formatDate() {
    var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
    var test = "02/20/1901";
    var obj = $('.format');
    var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
    if (test == regEx) {
        alert("Matches Regular Expression 1.");
        if (test == febRexEx) {
            alert("Bad date!\nMatches Regular Expression 2!");
        } else {
            alert("Not a bad date.\nDoesn't match Regular Expression 2.");
        }
    } else {
        alert("Bad date!\nDoesn't match Regular Expression 1!");
    }
}

我认为测试日期应该与第一个正则表达式匹配,但代码告诉我事实并非如此 - 我得到错误的日期!与正则表达式 1 不匹配! 警报消息。为什么会发生这种情况?如何解决?

最佳答案

您不能直接将字符串与正则表达式进行比较,请使用类似 match 的内容

  function formatDate() {
      var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
      var test = "02/20/1901";
      var obj = $('.format');
      var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
      if (test.match(regEx)) {
          alert("Matches Regular Expression 1.");
          if (test.match(febRexEx)) {
              alert("Bad date!\nMatches Regular Expression 2!");
          } else {
              alert("Not a bad date.\nDoesn't match Regular Expression 2.");
          }
      } else {
          alert("Bad date!\nDoesn't match Regular Expression 1!");
      }
  }

FIDDLE

关于jquery - 尽管格式正确,但日期与 RegExp 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791082/

相关文章:

android - 在 Kotlin 中循环字符串并用新行替换句号

python - 混淆转义单引号原始字符串文字中的单引号

jquery - 具有方向问题的响应式 slider 面板

c# - asp.net response.write 与 bootbox.alert

JQuery 鼠标悬停问题

jquery - 如何更改变量 :root css by jquery?

c++ - 从字面上理解 RegEx 中的每个字符

java - 将字符串拆分为句子

jquery - 如何根据验证增加进度条值

javascript - 使用正则表达式匹配获取错误无法从 null 读取属性 "0"