多个电子邮件地址的正则表达式

时间:2013-06-04 14:15:58

标签: javascript regex

我正在努力验证一串电子邮件地址。如果只有一个电子邮件地址,此模式可以正常工作:

var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;

但如果我有两个以空格或换行符分隔的电子邮件地址,则它不会验证。例如:

xyz@abc.com xyz@bbc.com

xyz@abc.com 
xyz@bbc.com

你能告诉我这是怎么回事?我是正则表达式的新手。

非常感谢!感谢。

6 个答案:

答案 0 :(得分:2)

试试这个RegEx

/^\s*(?:\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}\b\s*)+$/

Regular expression image

在上图中,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

Regular expression image

答案 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