正则表达式仅匹配域名而不匹配子域

标签 regex

我只想在正则表达式中匹配domain.com而不是subdomain.domain.com。

现在我有这个正则表达式

/([0-9a-z-]{2,}\.[0-9a-z-]{2,3}\.[0-9a-z-]{2,3}|[0-9a-z-]{2,}\.[0-9a-z-]{2,3})$/i

但它也匹配子域。所以我想跳过带有子域的域,只处理“正常”的域。

有什么想法吗?谢谢!

编辑:不应跳过 .co.in、.co.uk 等域名。

最佳答案

这样可以吗?

/^[0-9a-z-]+\.(?:(?:co|or|gv|ac)\.)?[a-z]{2,7}$/i

仅匹配 domain.com

稍微更改一下,因为将 TLD 限制为最多 3 个字符会删除诸如 .museum 之类的内容,或者这是有意为之?

如果您确实需要更准确的模式,那将是一个很棒的长模式,而正则表达式可能不是最佳解决方案。可以看到,有many tlds在那里和even more two-level-tlds :)

关于正则表达式仅匹配域名而不匹配子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20866842/

相关文章:

Java regex - 如果不是单词开头,则从字符串中删除短语

java - 逐行将字符串写入文本文件时避免重复

regex - PowerShell:-replace、regex 和 ($) 美元符号问题

jquery 正则表达式替换 href

regex - 如何查找具有所有指定字符且重复的单词?

javascript - 使用 jquery regex 函数显示匹配的字符串

java - 用于解析 Azure Data Lake Storage Gen2 URI 的正则表达式,以便使用 Azurite 进行生产和测试

c - 如何从 C 中的字符串中删除 <it></in> 和 () 内的所有内容?

java - 从较大的字符串中提取包含通配符的字符串

java - 如何使用正则表达式修改其中的几个字段来创建新的 JSON 字符串?