为什么以下代码返回true
的值为“my@cool.email”(最后一个点后超过4个字符)?
模式/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/
在我的php脚本和regex101.com(正则表达式测试器)中工作正确。
$(document).ready(function() {
$.validator.addMethod("pattern", function(value, element, param) {
if (this.optional(element)) {
return true;
}
if (typeof param === "string") {
param = new RegExp("^(?:" + param + ")$");
}
return param.test(value);
}, "Invalid format");
$('.form-register').validate({
rules:{
email:{
required: true,
pattern: "([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,4})*"
}
messages:{
email:{
pattern: "Invalid email"
}
});
});
.....
<input type="text" name="email" id="email" class="form-control" placeholder="eMail" required="required">
答案 0 :(得分:0)
答案 1 :(得分:0)
正则表达式正在运行:
if (/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/.test("my@cool.email")) {
alert("True");
} else {
alert("False");
}
尝试在脚本中将^和$添加到正则表达式中。
如果您使用它,它可以工作:
$(document).ready(function() {
$.validator.addMethod("pattern", function(value, element, param) {
if (this.optional(element)) {
return true;
}
if (typeof param === "string") {
param = new RegExp("^(?:" + param + ")$");
}
return param.test(value);
}, "Invalid regular expression format");
$('.form-register').validate({
rules:{
login:{
required: true,
pattern: "[a-zA-Z_][a-zA-Z0-9._]+",
minlength: 3
},
email:{
required: true,
pattern: /^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/
},
},
messages:{
login:{
pattern: "Ivalid login"
},
email:{
required: "required",
pattern: "Ivalid email"
},
}
});
});