javascript - 正则表达式仅匹配来自任何电子邮件地址的最终域名

标签 javascript regex regex-lookarounds

我想匹配来自电子邮件地址的 父域名,该电子邮件地址可能有也可能没有子域。

到目前为止我已经试过了:

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/

相关文章:

regex - 使用 sed 捕获的组变量作为 bash 命令的输入

javascript - 正则表达式第一部分以数字开头

用于匹配 MongoDB 字符串的正则表达式

regex - 正则表达式匹配包含子集的整个字符串

Javascript正则表达式来搜索某些类

javascript - 通过javascript将查询字符串从一个页面传递到另一个页面

javascript - iFrame 中的 cordova 回调

javascript - 在升序和降序之间切换列排序

Javascript:将带有通配符的路径保存到变量中

javascript - jquery mask 输入插件仅设置日期的日值