我想在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 :(得分:3)
会这样做吗?
/^[0-9a-z-]+\.(?:(?:co|or|gv|ac)\.)?[a-z]{2,7}$/i
仅匹配domain.com
稍微改变了一下,因为将TLD限制为最多3个字符会取消.museum
之类的内容,还是有意?
如果你真的需要一个更精确的模式,那将是一个非常棒的长模式,正则表达式可能不是最好的解决方案。正如您所看到的,那里有many tlds和even more two-level-tlds:)
答案 1 :(得分:2)
您要做的第一件事是明确定义域扩展,否则需要
domain.co.in作为子域名,但它是一个域名。
所以你的正则表达式需要有类似的东西(com | co.in | co.uk | org | org.in ...)
试试这个(经过试验和测试)
^[0-9a-z-]+\.(?:\.)?(com|com.au|org|org.in|co|co.uk)$
希望有所帮助:)