一点regexp javascript

时间:2017-08-29 13:01:39

标签: javascript regex

我有以下正则表达式:

/a/b/([^\/]+)(\?id=1)?

第一个捕获组的匹配是/ a / b / 搜索?id = 1

目前,Regexp.$1=search?id=1,但我希望Regexp.$1=search

1 个答案:

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