正则表达式拒绝特定的电子邮件

时间:2017-08-17 10:12:17

标签: regex

我正在尝试编写一个正则表达式来匹配电子邮件,以便它拒绝两个电子邮件地址test@testdomain.comtes2@testdomain.com,并匹配来自特定域的所有其他电子邮件地址。到目前为止,我已经做了以下模式:

^(?!test@testdomain.com|tes2@testdomain.com)|(A-Z0-9)[A-Z0-9._%+-]+@testdomain.com$

到目前为止,它能够拒绝我想阻止的主要电子邮件地址,但它通过此接受所有其他字符串。作为替代方案,我写了以下正则表达式:

^(?!test|tes2)[A-Z0-9._%+-]+@testdomain.com$

但是,这会拒绝所有以test或tes2开头的模式。

有什么更好的正则表达式来实现这个场景?

1 个答案:

答案 0 :(得分:1)

"定影"你的正则表达式,你需要确保你在前瞻模式中测试@以匹配testtes2作为完整的用户名:

^(?!test@|tes2@)[A-Za-z0-9._%+-]+@testdomain\.com$
        ^     ^

请记住逃避一个点。请参阅regex demo

但是,您可能希望对用户名部分的限制较少,只需使用\S+而不是您的角色类:

^(?!test@|tes2@)\S+@testdomain\.com$
                ^^^

another regex demo\S+模式匹配除空白字符以外的任何1个或多个字符。