如何使用正则表达式匹配特定域中的所有电子邮件地址?

时间:2011-03-04 08:52:41

标签: regex

我需要帮助才能找到匹配特定域

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

与任何.*@testdomain.com

一样

除了.*@testdomain.com

之外,其他任何事情都相反

4 个答案:

答案 0 :(得分:21)

Ay的

我提出一个非常简单的表达方式:

^[A-Za-z0-9._%+-]+@testdomain.com$

并进行否定检查:

^[A-Za-z0-9._%+-]+@(?!testdomain.com)[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$

我希望能为你效劳

答案 1 :(得分:0)

grep -oE '( |^)[^ ]*@testdomain\.com( |$)' file.txt

-o仅返回匹配的字符串

以上内容将在file.txt中提供testdomain的所有电子邮件ID。

答案 2 :(得分:0)

对于我的特定情况,我需要这种变化:

'^[A-Za-z0-9._%+-]+@' + email_domain + '$'

这会匹配email_domains列表中的email_domain:[' example1.com',' example2.co.uk']我正在浏览列表,每个匹配针对电子邮件地址列表。

答案 3 :(得分:0)

@Kushal我找到了一种简单的方法来执行此操作,但这有点棘手,因为我必须通过Ajax从存储在其他位置的全局变量中检索域。

这是JavaScript验证方法中的以下代码行:

return new RegExp("^\\w+([-+.']\w+)*@"+getDomain.responseJSON.d+"$").test(value.trim());

我当场创建了一个新的RegExp并测试该值(电子邮件输入)以查看其是否与域匹配。

  • 引号内的字符串是正则表达式,可以包含用户使用的任何名称。
  • getDomain.responseJSON.d是使用$ .getJSON()检索的动态全局域变量(以防万一我希望对其进行更改并且不想干扰源代码。);调用WCF服务。

如果您想要更精致的内容但具有标准域,则可以这样:

return /^\w+([-+.']\w+)*@?(example1.com|example2.com)$/.test(value.trim());