javascript - pattern.test 不是函数

标签 javascript jquery regex pattern-matching

我真的不明白为什么下面的代码不匹配正则表达式

$val = "12/11/2012";
$opts = {"rule" : "required|format", "format" : {"pattern" : /^\d{1,2}\/\d{1,2}\/\d{4}$/, "errorMsg" : "Invalid date. Allowed allowed: mm/dd/yyyy"}}; 

if(rule=="format" && typeof $opts.format.pattern==="string") {
    try {
       var pattern = (typeof $opts.format.pattern==="object") ? $opts.format.pattern : new Regex($opts.format.pattern, "g");
       if(pattern.test($val)) { // $val contains 12/11/2012
            alert("Invalid Date!"); // Shows invalid format
       }
    } catch(err){
       alert(err.message); // shows pattern.test is not a function
    }
}

最佳答案

问题是 $opts.format.pattern 不是一个字符串,它是一个 RegEx 对象。

所以这会起作用:

var $val = "12/11/2012";
var $opts = {"rule" : "required|format", "format" : {"pattern" : /^\d{1,2}\/\d{1,2}\/\d{4}$/, "errorMsg" : "Invalid date. Allowed allowed: mm/dd/yyyy"}}; 

if ($opts.format.pattern instanceof RegExp) {
  try {
    var pattern = $opts.format.pattern;
    if(!pattern.test($val)) {
      alert("Invalid date");
    } else {
      alert("Valid date");
    }
  } catch(err){
    alert(err.message); // shows pattern.test is not a function
  }
}

关于javascript - pattern.test 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828591/

相关文章:

javascript - Animate.css 延迟动画,如何使用 animate.css 创建幻灯片

javascript - 有没有什么方法可以在单击onbeforeunload确认对话框的OK按钮后立即执行某些操作

javascript - 奇怪的正则表达式相关的javascript问题(Firefox 3.6.12中的正则表达式全局修饰符问题)

正则表达式 - 匹配 URL,除了个别情况

python - 使用正则表达式从字符串中提取所有电子邮件

javascript - 在应用程序商店中发布后更新 Cordova 应用程序中的 javascript 代码

Javascript删除不删除所有元素

javascript - 在游戏 map 上动态定位绝对元素

javascript - 获取变量的名称(如 C# 中的 nameof 运算符)

javascript - VueJS 和 "vue-markdown",当 `rendered` 事件被触发时 DOM 还没有准备好