【发布时间】:2014-12-28 07:59:42
【问题描述】:
我想从一些 url 中提取 q 参数:
.com/?gws_rd=ssl#q=test
.com/search?q=something+else&source=123
这是我想出的一个正则表达式:q=(.*?)(&|$)。当&终止时,结果是:
["q=test", "test", "&"]
否则,当它到达行尾时:
["q=test", "test", ""]
这可行,但似乎不正确。
有没有办法完全不包括最后一个匹配组,因为我对它不感兴趣?
【问题讨论】:
-
... 为什么不将您的正则表达式更改为
/q=(.*?)[&|$]/?您不希望与&|$匹配,而是希望将它们作为一个整体进行评估。 -
@TheIronDeveloper 与第一个 url 不匹配
-
@Thelron
[&|$]会超出你的假设。 -
你是对的,管道在那里没有意义。这是一个更好的正则表达式,对两者都有效:
/q=([^&]*)/。我仍在评论的唯一原因是前瞻正则表达式性能不佳。 -
@TheIronDeveloper 很有趣,并适当地注意到了。
标签: javascript regex uri