仅限自定义域的电子邮件的正则表达式

时间:2015-05-13 17:13:14

标签: regex asp.net-mvc-4

嗨我需要使用自定义域的电子邮件的正则表达式,意味着我想要排除:

@ live,@ hotmail,@ OUTlook,@ aol,@ yahoo,@ rocketmail,@ gmail,@ gmx.com,@ mail.com,@ inbox.com,@ icloud,@ aim,@ yandex,@ zoho

3 个答案:

答案 0 :(得分:2)

在电子邮件地址模式中@之后立即添加以下内容:

(?!(?:live|hotmail|outlook|aol|yahoo|rocketmail|gmail|
   gmx\.com|mail\.com|inbox\.com|icloud|aim|yandex|zoho)$)

请务必使用不区分大小写的匹配。

(为了便于阅读,添加了换行符。)

答案 1 :(得分:2)

在单个循环中对候选字符串使用两个正则表达式测试。

  1. 在第一个测试中,您检查不需要的域并在匹配时跳过字符串:

    /^[\w-\._\+%]+@(live|hotmail|outlook|aol|yahoo|rocketmail|gmail|gmx\.com|mail.com|inbox.com|icloud|aim|yandex|zoho)\./
    
  2. 在第二个测试中,您使用的是标准电子邮件正则表达式。

答案 2 :(得分:0)

感谢@ikegami和@David我的答案我把你的答案和它的工作结合起来,大部分来自大卫。 正则表达式:

^[\w-\._\+%]+@(?!(live|hotmail|outlook|aol|yahoo|rocketmail|gmail|gmx\.com|mail\.com|inbox\.com|icloud|aim|yandex|zoho)$)(?:[\w-]+\.)+[\w]{2,6}$