我想从一些网址中提取q
参数:
.com/?gws_rd=ssl#q=test
.com/search?q=something+else&source=123
这是我提出的正则表达式:q=(.*?)(&|$)
。当&
终止时,结果为:
["q=test", "test", "&"]
否则,当它到达行尾时:
["q=test", "test", ""]
这有效,但看起来并不合适。
有没有办法不包括最后一个匹配组,因为我对它不感兴趣?
答案 0 :(得分:2)
将最后一组变为正向前瞻断言。
(?=&|$)
断言匹配必须后跟&
或行锚$
的结尾
q=(.*?)(?=&|$)
> ".com/?gws_rd=ssl#q=test".match(/q=(.*?)(?=&|$)/)
[ 'q=test',
'test',
index: 17,
input: '.com/?gws_rd=ssl#q=test' ]
仅打印捕获组内的字符。
> var s = ".com/?gws_rd=ssl#q=test"
undefined
> console.log(/q=(.*?)(?=&|$)/.exec(s)[1]);
test