Javascript 正则表达式来匹配URL的每个子域
我试图编写一个正则表达式,将URL的子域/域部分提取为单独的字符串 我试过这个:Javascript 正则表达式来匹配URL的每个子域,javascript,regex,subdomain,Javascript,Regex,Subdomain,我试图编写一个正则表达式,将URL的子域/域部分提取为单独的字符串 我试过这个: /^[^::::+:\/\/([^\.\/]+)(\.[^\.\/]+)+(?:\/\$)/ 它应该针对以下URL工作: http//www.mail.yahoo.co.uk/blah/blah http//test.test.reach.mail.yahoo.com/blah/blah 我想把它分成以下几个部分: [“http://”,“www”,“.mail”,“.yahoo”,“.co”,“.uk”] [“h
/^[^::::+:\/\/([^\.\/]+)(\.[^\.\/]+)+(?:\/\$)/
它应该针对以下URL工作:
http//www.mail.yahoo.co.uk/blah/blah
http//test.test.reach.mail.yahoo.com/blah/blah
我想把它分成以下几个部分:
[“http://”,“www”,“.mail”,“.yahoo”,“.co”,“.uk”]
[“http://”、“test”、“test”、“再次”、“mail”、“yahoo”、“com”]
现在我只能将它们捕获为:
[“http://”,“www”,“.uk”]
[“http://”,“test”,“.com”]
有人知道如何修复我的正则表达式吗?你可以使用/(http[s]?:\/\/\/\\w+(?=\)\124\.\ w+/g
您可以使用正则表达式
(^\w+:\/\/)([^.]+)
匹配第一部分,然后使用
\.\w+
与第二部分相匹配
检查代码片段
函数getSubDomains(str){
让result=str.match(/(^\w+:\/\/)([^.]+)/);
结果:拼接(0,1);
result=result.concat(str.match(/\.\w+/g));
控制台日志(结果);
返回结果;
}
getSubDomains('http://www.mail.yahoo.co.uk/blah/blah');
getSubDomains('http://test.test.again.mail.yahoo.com/blah/blah');代码>如何使用链接开始匹配
var-str='http://test.test.again.mail.yahoo.com/blah/blah';
var res=str.match(/^[a-z]+:\/\/\/\\.?[^/\s]+/yig);
控制台日志(res)代码>你能发布你的代码吗?它只是regex.exec(url)
。你能解释一下为什么要用/^[^::+:\/\/\/([^\.\/]+)(\.[^\.\/]+)+(?:\/\$)/
来匹配http://test.test.again.mail.yahoo.com/blah/blah
只有两个组。Does()+
不会展开,只会展开一个组。如果我想让多个组具有相同的模式,如何编写它?让我用一个简单的例子来尝试。考虑一个带有数字“代码>98997088567</CODE”的移动号码,这3种情况:<代码>([ 9 ])< /代码>意味着匹配并返回所有出现的数字<代码> 9 < /代码>,<代码>([4] +)< /代码>意味着匹配并返回所有出现的连续<代码> 9 < /代码> s,<代码>([9)]。+
表示所有连续出现的9
s,但只返回最后匹配的组。谢谢!我明白。:)