我正在尝试编写一个正则表达式来匹配电子邮件,以便它拒绝两个电子邮件地址test@testdomain.com
和tes2@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开头的模式。
有什么更好的正则表达式来实现这个场景?
答案 0 :(得分:1)
"定影"你的正则表达式,你需要确保你在前瞻模式中测试@
以匹配test
和tes2
作为完整的用户名:
^(?!test@|tes2@)[A-Za-z0-9._%+-]+@testdomain\.com$
^ ^
请记住逃避一个点。请参阅regex demo。
但是,您可能希望对用户名部分的限制较少,只需使用\S+
而不是您的角色类:
^(?!test@|tes2@)\S+@testdomain\.com$
^^^
见another regex demo。 \S+
模式匹配除空白字符以外的任何1个或多个字符。