正则表达式匹配主机名 - 不包括TLD

时间:2009-05-07 19:24:35

标签: regex hostname

我需要匹配主机名 - 但不要使用tld:

example.com =〜/ regex / =>示例

sub.example.com =〜/ regex / => sub.example

sub.sub.example.com =〜/ regex / => sub.sub.example

正则表达式的任何帮助?感谢。

6 个答案:

答案 0 :(得分:4)

假设您的字符串格式正确且不包含协议等内容[即http://],您需要所有角色,但不包括最终的.tld。

所以这是最简单的方法。使用正则表达式的技巧不是让事情过于复杂:

.*(?=\.\w+)

这基本上是说,给我集后面的所有字符[例如] .xxx ,这基本上只返回上一期之前的所有内容

如果你没有前瞻,那么最简单的方法就是使用:

(\w+\.)+

它将为您提供包括最终''在内的所有内容。然后修剪'。'。

答案 1 :(得分:1)

试试这个

/.+(?=\.\w+$)/

没有支持?=它将是

/(.+)\.\w+$/

然后获取第一组的内容

答案 2 :(得分:-1)

你可以剥掉tld:

s/\.[^\.]*$//;

答案 3 :(得分:-2)

(.*)\.

这并不是特定于tlds,它只会在最后一段时间之前给你一切。如果您想严格对待有效的TLD或其他任何内容,则必须以不同的方式编写。

答案 4 :(得分:-2)

(?<Domain>.*)\.(?<TLD>.*?)$

答案 5 :(得分:-3)

我不清楚你想如何让匹配工作。但是使用通常的扩展正则表达式,你应该能够将任何tld与[a-zA-Z]{2,3}匹配所以如果你想要获得tld以外的全名,那就像

\(.\)\.[a-zA-Z]{2,3}$

应该接近。