jQuery验证插件和正则表达式

时间:2015-01-12 21:28:16

标签: jquery regex

为什么以下代码返回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">

2 个答案:

答案 0 :(得分:0)

您应该将此语法用于正则表达式:

var pattern = /[a-z]/;

尝试从表达式中删除问号。

http://www.w3schools.com/js/js_regexp.asp

答案 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"
                    },

                }
            });
        });