Ste*_*eve 5 javascript regex jquery 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
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这$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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2925 次 |
| 最近记录: |