我想匹配来自电子邮件地址的仅 父域名,该电子邮件地址可能有也可能没有子域。
到目前为止我已经试过了:
new RegExp(/.+@(:?.+\..+)/);
结果:
Input: abc@subdomain.maindomain.com
Output: ["abc@subdomain.domain.com", "subdomain.maindomain.com"]
Input: abc@maindomain.com
Output: ["abc@maindomain.com", "maindomain.com"]
我对第二场比赛(小组赛)感兴趣。
我的目标是,在这两种情况下,我希望组匹配并只给我 maindomain.com
注意:在否决票之前,请注意我既不能使用现有的答案,也不能匹配现有的问题。
最佳答案
您可以使用一个简单的正则表达式来仅获取域名的最后 2 部分是
/[^.]+\.[^.]$/
它匹配一系列非句点字符,后跟句点和另一个非句点序列,都在字符串的末尾。此正则表达式不能确保此域名出现在“@”之后。如果你想制作一个也能做到这一点的正则表达式,你可以使用带有“*?”的惰性匹配:
/@.*?([^.]+\.[^.])$/
但是,我认为尝试一次完成所有事情往往会使 make 正则表达式更加复杂且难以阅读。在这个问题中,我宁愿分两步做事:首先检查电子邮件中是否有“@”。然后你得到“@”后面的部分并将它传递给简单的正则表达式,它将提取域名。
分离事物的一个好处是一些改变更容易。例如,如果您想确保您的电子邮件中只有一个“@”,则可以在单独的步骤中轻松完成,但在“do everything”正则表达式中很难实现。
关于javascript - 正则表达式仅匹配来自任何电子邮件地址的最终域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924553/