Regex 如何使用正则表达式从URL返回子域?

Regex 如何使用正则表达式从URL返回子域?,regex,string,Regex,String,我原以为用正则表达式可以很简单地做到这一点,但到目前为止,这个解决方案被证明是难以捉摸的。下面是一个场景-我想捕获URL的子域部分,但不捕获“www”。如果它存在,例如,假设这些URL中的任何一个 www.mysubdomain.mydomain.com mysubdomain.mydomain.com 我希望表达式只返回mysubdomain-无点 如果您使用的语言支持lookback,那么您可以使用: (?<=^www\.|^)[^.]+ ^(?:www\.)?([^.]+) 您的

我原以为用正则表达式可以很简单地做到这一点,但到目前为止,这个解决方案被证明是难以捉摸的。下面是一个场景-我想捕获URL的子域部分,但不捕获“www”。如果它存在,例如,假设这些URL中的任何一个

www.mysubdomain.mydomain.com
mysubdomain.mydomain.com


我希望表达式只返回mysubdomain-无点

如果您使用的语言支持lookback,那么您可以使用:

(?<=^www\.|^)[^.]+
^(?:www\.)?([^.]+)
您的结果是第一个捕获组,例如javascript:

var mystring = 'www.mysubdomain.mydomain.com';
var match = /^(?:www\.)?([^.]+)/.exec(myString);
console.log(match[1]);

你的问题有很多答案,或者如果有子域的子域?那么像subdomain.domain.co.uk这样的东西呢?@Beat我不关心第二种情况——这是针对特定的.com域的。至于子域的子域-如果我错了,请纠正我,但这不是第一个示例中的“www”吗?总之,“www”是我感兴趣的子域的子域的唯一用例,我只想把它去掉。@sk8terboi87ツ 这两个问题都没有回答我的问题。每个人都试图解决一个稍有不同的问题。第一个很接近,但包含“www.”。字符串在提取之前是否经过任何验证?谢谢,但我在两个不同的在线Regex测试程序中尝试了这两种方法,第一个语法根本不起作用,第二个语法不起作用-它还返回“www.”@user2479894:normal作为第一个模式,javascript没有lookback特性。第二种模式返回
www.subdomain
,这也很正常,但您可以从结果中提取第一个仅包含
subdomain