限制电子邮件正则表达式中的特定域

时间:2018-09-23 14:57:47

标签: java regex

我有一个用于验证电子邮件输入字段的正则表达式。

[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不匹配,该电子邮件ID正确。 但问题是它也与wt.comm或受限字符串后的任何其他字母都不匹配。 我只想限制以 wt.com des.net 结尾的电子邮件 我怎么做? 以下是应匹配的电子邮件示例。

  1. ajcom@wt.com:没有匹配项
  2. ajcom@aa.an:匹配
  3. ajcom@wt.coms:匹配
  4. ajcom@des.net:没有匹配项
  5. ajcom@des.neta:匹配

1 个答案:

答案 0 :(得分:1)

如果您只想阻止后面没有字符的wt.comdes.net,则可以在末尾添加$ anchor(代表字符串的末尾)。每个否定的前瞻。

因此,使用(?!wt\\.com)(?!des\\.net)代替(?!wt\\.com$)(?!des\\.net$)