我正在努力验证一串电子邮件地址。如果只有一个电子邮件地址,此模式可以正常工作:
var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
但如果我有两个以空格或换行符分隔的电子邮件地址,则它不会验证。例如:
xyz@abc.com xyz@bbc.com
或
xyz@abc.com
xyz@bbc.com
你能告诉我这是怎么回事?我是正则表达式的新手。
非常感谢!感谢。
答案 0 :(得分:2)
试试这个RegEx
/^\s*(?:\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}\b\s*)+$/
在上图中,Group 1
内的所有内容都是您已有的内容。我添加了一个单词结尾和空格。
它会匹配"xyz@abc.com"
," xyz@bbc.com "
,"xyz@abc.com xyz@bbc.com"
和多行电子邮件地址。
<强>更新强>
我从http://www.regular-expressions.info/email.html获得了RegEx for Email,我在表达中使用了它。你可以在下面找到它:
/^\s*(?:([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b\s*)+$/i
答案 1 :(得分:1)
将^
和$
锚点更改为字边界\b
。
/\b\w+...{2,3}\b/
您还应该注意,电子邮件地址的实际规范非常复杂,并且有许多电子邮件将无法通过此测试 - 例如,在域中具有多个句点的电子邮件。可能对你的目的没问题,但只是指出来。
答案 2 :(得分:0)
试试这个
function validateEmail(field) {
var regex=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
return (regex.test(field)) ? true : false;
}
function validateMultipleEmailsCommaSeparated(value) {
var result = value.split(" ");
for(var i = 0;i < result.length;i++)
if(!validateEmail(result[i]))
return false;
return true;
}
答案 3 :(得分:0)
您可以考虑将整个字符串拆分为实际的电子邮件地址数组,而不是尝试一次验证整个事物。这样做的好处是可以让您在验证消息中指出哪个地址失败了。 你看起来像这样:
var emailRegex = /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i; // http://www.regular-expressions.info/email.html
var split = form.emails.value.split(/[\s;,]+/); // split on any combination of whitespace, comma, or semi-colon
for(i in split)
{
email = split[i];
if(!emailRegex.test(email))
{
errMsg += "The to e-mail address ("+email+") is invalid.\n";
}
}
答案 4 :(得分:0)
多封电子邮件的最佳正则表达式接受所有特殊字符
(-*/+;.,<>}{[]||+_!@#$%^&*())
答案 5 :(得分:-2)
多封电子邮件的最佳正则表达式
/ ^([A-Z0-9 %+ - 。] + @ [A-Z0-9 .-] + [AZ] {2,6-}。)*([;] [\秒] *([A-Z0-9 %。+ - 。] + @ [A-Z0-9 .-] + [AZ] {2,6-}))* $ / I