jQuery验证无法按预期工作

时间:2014-05-13 12:37:32

标签: javascript jquery regex

以下是我的regular expression方法。

 $.validator.addMethod("regex", function (element, value, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
    }, "Special Characters not permitted");

以下是我的rules

var rules = {
    cname: {
        required: true,
        minlength: 8
        //alphanumeric:true
        //regex: "/^\w+$/i"
        //uniqueCompnameName: true
    }
}

当我将正则表达式传递给regex时,它根本不起作用。

2 个答案:

答案 0 :(得分:2)

尝试使用正则表达式将正则表达式作为字符串

传递
$.validator.addMethod("regexp", function (value, element, regexp) {
    if (typeof regexp == 'string') {
        regexp = new RegExp(regexp);
    }
    return this.optional(element) || regexp.test(value);
}, "Special Characters not permitted");

然后

        name1: {
            required: true,
            regexp: '/^\w+$/'
        },
        name2: {
            required: true,
            regexp: /^\w+$/i
        }

演示:Fiddle

答案 1 :(得分:1)

请注意,\w[a-zA-Z0-9_]相同。现在,对于正则表达式,你真的在​​这里寻找:

^[A-Za-z0-9]{8,}$

Regular expression visualization

这就是说任何字符的长度最少为8个字符。

最后,当将正则表达式传递给函数时,你想要像这样传递它:

regex: '^[A-Za-z0-9]{8,}$'

然后在构建RegExp时,要将标志作为第二个参数传递:

var re = new RegExp(regexp, 'i');

Debuggex Demo

相关问题