我使用正则表达式来分隔网址的元素:
http://domain.com/page/post#fragment?query
/(?:([\w\-\+]+(?<!domain\.com))\/?)?(?:([\w\-\+]+(?<!domain\.com))\/?)?(?:#([\w\-\+]+))?(?:\?([\w\-\+]+))?$/
以下是这场比赛的结果:
$ 1 = page
$ 2 =发布
$ 3 =片段
$ 4 =查询
我收到此错误:
Invalid regular expression: /(?:([\w\-\+]+(?<!localhost))\/?)?(?:([\w\-\+]+(?<!localhost))\/?)?(?:#([\w\-\+]+))?(?:\?([\w\-\+]+))?$/: Invalid group
答案 0 :(得分:6)
此部分:(?<!domain\.com))
是问题,因为Javascript不支持lookbehind
。
答案 1 :(得分:0)
您可以调整它以满足您的需求,它可以捕获URL的大部分不同部分:
^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$
小提琴:http://www.rexfiddle.net/m1ERMlZ
注意:这不适用于以换行符分隔的多个网址,因此使用g
或m
标记无效。
如果您只想尝试对网址进行标记(即从中单独抓取不同的部分),请尝试以下简单方法:https://gist.github.com/jlong/2428561