0

我正在尝试使用 jquery.validator 和 xregexp 测试一个字符串,但我需要能够动态设置一个不区分大小写的标志。问题是我不知道如何使用参数将我的 xregexp 的标志发送到 addmethod。这是我的 addmethod 目前的样子:

$.validator.addMethod(
    "regex",
    function(value, element, regexp) {
        var re = new XRegExp(regexp);
        return this.optional(element) || re.test(value);
    },
    "Please check your input."
);

这是我的呼吁:

webAddr: {
    regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$\\i',
    maxlength: 256,
    minlength: 4
},

我的问题是\\i。我想包含它,但根据文档,您必须使用以下格式将其作为单独的参数包含在内:

XRegExp(regexp, flags);

如何使用 jquery.validator 传递该动态?

PS:我使用 xregexp 而不是其他东西的原因是因为我在代码的其他地方需要真正的 UTF-8 支持,所以我尝试坚持使用它来帮助我更熟练地使用它。

4

1 回答 1

1

传递一个对象regex以将正则表达式与标志分开:

webAddr: {
    regex: {regex: '^(http(s)?:\/\/)?(([a-z]+[a-z0-9-\\.]*)\\.)+[a-z]{2,}$', 
            flags:'i'},
    maxlength: 256,
    minlength: 4
},

(我已将标志从 更改为'\\i''i'因为我从未听说过'\\i'作为标志。)

并像这样修改您的验证代码:

$.validator.addMethod(
    "regex",
    function(value, element, param) {
        var re = new XRegExp(param.regex, param.flags);
        return this.optional(element) || re.test(value);
    },
    "Please check your input."
);

我没有测试过这段代码,所以要注意拼写错误。

于 2014-02-19T02:43:29.127 回答