jQuery验证-CSV电子邮件正则表达式,不带尾随逗号
下面是我在.validate中进行自定义验证的代码。我想允许用户输入用逗号分隔的电子邮件地址,但我的正则表达式不允许使用逗号结尾jQuery验证-CSV电子邮件正则表达式,不带尾随逗号,jquery,regex,Jquery,Regex,下面是我在.validate中进行自定义验证的代码。我想允许用户输入用逗号分隔的电子邮件地址,但我的正则表达式不允许使用逗号结尾 aaa@foo.com, bbb@bar.com=正常 aaa@foo.com,bbb@bar.com=正常 aaa@foo.com,=不正常(注意此处也是尾随空格) aaa@foo.com,=不正常 但我的问题是,在下面的所有这些都是可以的 $.validator.addMethod('csvEmail', function (value, element) {
aaa@foo.com, bbb@bar.com
=正常
aaa@foo.com,bbb@bar.com
=正常
aaa@foo.com,
=不正常(注意此处也是尾随空格)
aaa@foo.com,
=不正常
但我的问题是,在下面的所有这些都是可以的
$.validator.addMethod('csvEmail', function (value, element) {
return this.optional(element) || /^((([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+(,|, |$))*$/.test(value);
}, "Please enter a valid email address or multiple valid addresses separated by a comma.");
$.validator.addMethod('csvEmail',函数(值,元素){
返回此.optional(element)| |/^(([^()\[\]\\,;:\s@“]+(\.[^()\[\]\,;:\s@“]+)*)(“+”)((\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]}.[1,3}.[0-9]}.[1,3}.+++]1,3}.[1,3}.]测试值])/([a-zA 0-0-9]+]1242],[1,3}.-+];
},“请输入一个有效的电子邮件地址或多个用逗号分隔的有效地址。”);
您的regex
表达式的问题是您正在匹配第一列aaa@foo.com
以及,
或,(空格)
或(行尾)
。然后,使用*
检查它是否重复0
或更多次
但是,此处不能使用*
或+
符号。您希望它始终与2
次匹配。因此,您希望将regex
修复为以下内容:
^((([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+(,|, |$)){2}$
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
aaa@foo.com,
aaa@foo.com,
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
无论如何,两者都会返回所需的结果,如下所示:
^((([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+(,|, |$)){2}$
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
aaa@foo.com,
aaa@foo.com,
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
它们只强调以下几点:
^((([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))+(,|, |$)){2}$
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
aaa@foo.com,
aaa@foo.com,
aaa@foo.com, bbb@bar.com
aaa@foo.com,bbb@bar.com
如果您希望自己尝试,请在两者之间更改regex
。他们都工作