我正在尝试使用jquery.validator和xregexp测试字符串,但是我需要能够动态地设置一个不区分大小写的标志。问题是,我不知道如何使用param将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。我想要包含它,但是根据文档,您必须使用以下格式将它作为单独的param包括:
XRegExp(regexp, flags);如何使用jquery.validator传递动态信息?
PS:我之所以使用xregexp而不是其他东西,是因为我需要代码中其他地方真正的UTF-8支持,所以我试着把它用于任何事情,以帮助我更好地使用它。
发布于 2014-02-19 02:43:29
为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."
);我还没有测试过这段代码,所以要小心输入。
https://stackoverflow.com/questions/21863417
复制相似问题