给定URL (单行):
http://test.example.com/dir/subdir/file.html
如何使用正则表达式提取以下部分:
测试子域(测试) (example.com)
即使我输入以下URL,正则表达式也应该正常工作:
http://example.example.com/example/example/example.html
发布于 2008-08-26 11:06:09
一个单一的正则表达式,用于解析和分解一个完整的
,包括查询参数和锚点。
https://www.google.com/dir/1/2/search.html?arg=0-a&arg1=1-b&arg3-c#hash
^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$
RexEx职位:
url: RegExp'$&',
协议:RegExp.$2,
主持人:RegExp。$3,
路径:RegExp.$4,
文件:RegExp.$6,
查询:RegExp.$7,
散列:RegExp。$8
然后您可以进一步解析主机(‘’)。分隔的)非常容易的。
I会做的事情是这样的:
/*
^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$
*/
proto $1
host $2
port $3
the-rest $4
进一步解析“其余部分”,使其尽可能具体。在一个正则表达式中完成它,嗯,有点疯狂。
发布于 2012-09-18 12:10:33
我知道我来晚了,但有一种简单的方法可以让浏览器在不使用正则表达式的情况下为您解析url:
var a = document.createElement('a');
a.href = 'http://www.example.com:123/foo/bar.html?fox=trot#foo';
['href','protocol','host','hostname','port','pathname','search','hash'].forEach(function(k) {
console.log(k+':', a[k]);
});
/*//Output:
href: http://www.example.com:123/foo/bar.html?fox=trot#foo
protocol: http:
host: www.example.com:123
hostname: www.example.com
port: 123
pathname: /foo/bar.html
search: ?fox=trot
hash: #foo
*/
发布于 2014-11-06 04:22:51
我迟到了几年,但我很惊讶没有人提到统一资源标识符规范有一个section on parsing URIs with a regular expression。Berners-Lee等人编写的正则表达式是:
^((^:/?#+):)?(//(^/?#*))?(^?#*)(\?(^#*))?(#(.*))?12 3 4 5 6 7 8 9
上面第二行中的数字只是为了提高可读性;它们表示每个子表达式的参考点(即每个成对的括号)。我们将子表达式匹配的值称为$。例如,将上面的表达式与
http://www.ics.uci.edu/pub/ietf/uri/#Related
结果为以下子表达式匹配:
$1 = http:$2 = http $3 = //www.ics.uci.edu $4 = www.ics.uci.edu $5 = /pub/ietf/uri/ $6 = $7 = $8 =#相关$9 =相关
无论如何,我发现我必须转义JavaScript中的正斜杠:
^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
https://stackoverflow.com/questions/27745
复制相似问题