Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式来匹配URL的每个子域_Javascript_Regex_Subdomain - Fatal编程技术网

Javascript 正则表达式来匹配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的子域/域部分提取为单独的字符串

我试过这个:

/^[^::::+:\/\/([^\.\/]+)(\.[^\.\/]+)+(?:\/\$)/

它应该针对以下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,但只返回最后匹配的组。谢谢!我明白。:)