我有一个用于验证电子邮件输入字段的正则表达式。
[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!$%&'*+/=?^_`{|}~-]+)*(\\.)?@(?:[a-zA-Z0-9ÄÖÜäöü](?:[a-zA-Z0-9-_ÄÖÜäöü]*[a-zA-Z0-9_ÄÖÜäöü])?\\.)+[a-zA-Z]{2,}
现在,我希望此正则表达式与两种特定类型的电子邮件ID不匹配。分别是wt.com和des.net
为此,我对上述表达式进行了如下更改。
[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!$%&'*+/=?^_`{|}~-]+)*(\\.)?@(?!wt\\.com)(?!des\\.net)(?:[a-zA-Z0-9ÄÖÜäöü](?:[a-zA-Z0-9-_ÄÖÜäöü]*[a-zA-Z0-9_ÄÖÜäöü])?\\.)+[a-zA-Z]{2,}
此后,它与以wt.com和des.net结尾的任何电子邮件ID不匹配,这是正确的。
但是问题是它也与wt.comm或受限字符串后的任何其他字母都不匹配。
我只想限制以wt.com和des.net结尾的电子邮件
我怎么做?
以下是应匹配的电子邮件示例。
[email protected]:没有匹配项
[email protected]:匹配
[email protected]:匹配
[email protected]:没有匹配项
[email protected]:匹配
最佳答案
如果只想防止后面没有字符的wt.com
和des.net
,则可以在每个否定前瞻的末尾添加$
anchor(代表字符串的末尾)。
因此,使用(?!wt\\.com)(?!des\\.net)
代替(?!wt\\.com$)(?!des\\.net$)
关于java - 限制电子邮件正则表达式中的特定域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52467331/