0

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

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

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

xyz@abc.com xyz@bbc.com

或者

xyz@abc.com 
xyz@bbc.com

你能告诉我有什么办法吗?我是正则表达式的新手。

非常感谢帮助!谢谢。

4

6 回答 6

2

试试这个正则表达式

/^\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,并在我的表达中使用了它。你可以在下面找到它:

/^\s*(?:([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b\s*)+$/i

正则表达式图片

于 2013-06-04T15:37:18.300 回答
1

^将和锚点更改$为单词边界,\b

/\b\w+...{2,3}\b/

您还应该注意,电子邮件地址的实际规范非常复杂,并且有许多电子邮件将无法通过此测试 - 例如域中具有多个句点的电子邮件。对于您的目的可能没问题,但只是指出来。

于 2013-06-04T14:19:06.803 回答
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;
}
于 2013-06-04T14:18:58.323 回答
0

多封电子邮件的最佳正则表达式接受所有特殊字符

(-*/+;.,<>}{[]||+_!@#$%^&*())

于 2015-04-24T12:06:57.703 回答
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";           
     }
  }
于 2014-09-18T15:40:14.467 回答
-2

多封电子邮件的最佳正则表达式

/^([A-Z0-9.%+-]+@[A-Z0-9.-]+.[AZ]{2,6})*([,;][\s]*([A _ -Z0-9. %+-]+@[A-Z0-9.-]+.[AZ]{2,6}))*$/i

于 2014-07-21T08:53:39.337 回答