我有以下正则表达式:
/a/b/([^\/]+)(\?id=1)?
第一个捕获组的匹配是/ a / b / 搜索?id = 1 。
目前,Regexp.$1=search?id=1
,但我希望Regexp.$1=search
。
答案 0 :(得分:0)
您可以通过将[^\/]
添加到否定字符类来限制?
:
/\/a\/b\/([^\/?]+)(\?id=1)?/
^
请参阅regex demo。 [^\/?]+
将匹配/
和?
以外的一个或多个字符,因此将在?
之前停止,该字符将与结尾处的可选捕获组匹配模式。
JS演示:
var s = "/a/b/search?id=1";
var rx = /\/a\/b\/([^\/?]+)(\?id=1)?/;
var m = s.match(rx);
if (m) {
console.log(m[1]); // => search
}