2017-08-17 39 views
2

我想写一个正则表达式来匹配电子邮件,这样它会拒绝两个电子邮件地址[email protected][email protected]并匹配来自特定域的所有其他电子邮件地址。到目前为止,我已经做了以下的模式:正则表达式拒绝特定的电子邮件

^([email protected]|[email protected])|(A-Z0-9)[A-Z0-9._%+-][email protected]$ 

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

^(?!test|tes2)[A-Z0-9._%+-][email protected]$ 

然而,这种拒绝与任何测试或TES2完全启动的所有模式。

什么是更好的正则表达式来实现此场景?

+0

'但它接受所有其他字符串通过这个'...其他情况下,你的第一个正则表达式失败/不满意? –

+0

我的意思是,它接收除了被拒绝的字符串之外的所有字符串,这会破坏正则表达式的整个目的。 –

回答

1

“修复”您正则表达式,你需要确保你也测试@先行模式中来匹配testtes2为完整的用户名:

^([email protected]|[email protected])[A-Za-z0-9._%+-][email protected]\.com$ 
     ^ ^

记住逃脱点了。请参阅regex demo

但是,您可能希望用户名部分限制较少,并且只使用\S+,而不是你的性格类:

^([email protected]|[email protected])\[email protected]\.com$ 
       ^^^ 

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