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



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

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

  1. ajcom@wt.com : 无匹配项
  2. ajcom@aa.安:匹配
  3. ajcom@wt.coms :match
  4. ajcom@des.net : 无匹配
  5. ajcom@des.neta:匹配

如果你想只防止后面没有字符的wt.comdes.net,你可以在每个负面前瞻的末尾添加$锚点(表示字符串的结尾(。

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

最新更新