当前网址是
search/warrington/st-album/title/3
我需要在st-
之后获取值,而在/
之后不需要。所以在这种情况下,我只想返回album
。
我正在使用下面的表达式
var patt= new RegExp((?=/st-(.*?/)));
return patt.exec(url)[1];
然而,这会返回album/
在上述情况下,有人可以让我知道正确的表达式吗?即仅返回album
而非album/
。
答案 0 :(得分:3)
new RegExp((?=/st-(.*?/)));
实际上应该抛出语法错误。
无论如何,要防止/
出现在捕获组中,请将其移出组(使用正则表达式文字):
var patt = /(?=\/st-(.*?)\/)/;
我认为不需要前瞻,你可以使用否定的字符类而不是懒惰的量词:
var patt = /\/st-([^/]+)/;
答案 1 :(得分:0)
您的斜线位于错误的位置:
var patt= new RegExp((?=/st-(.*?)/));
return patt.exec(url)[1];
您需要将其移出群组,以便它不会包含在匹配数组中。
答案 2 :(得分:0)
var expr = "search/warrington/st-album/title/3";
var regex = new RegExp( /\/st-(.*?)\// );
return regex.exec(expr)[1];
它应该有用