修复Javascript无效的正则表达式:无效的组

时间:2013-11-18 18:16:33

标签: javascript regex url match

我使用正则表达式来分隔网址的元素:

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

2 个答案:

答案 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

注意:这不适用于以换行符分隔的多个网址,因此使用gm标记无效。


如果您只想尝试对网址进行标记(即从中单独抓取不同的部分),请尝试以下简单方法:https://gist.github.com/jlong/2428561