0

当前网址是

search/warrington/st-album/title/3

我需要在之后获得价值,之后st-什么都没有/。所以在这种情况下,我只想返回album

我正在使用下面的表达式

var patt= new RegExp((?=/st-(.*?/)));
return patt.exec(url)[1];

然而,这会返回album/

在上面的例子中,有人可以让我知道 after 和 before 的正确表达吗?即返回只是album而不是album/

4

3 回答 3

3

new RegExp((?=/st-(.*?/)));实际上应该抛出一个语法错误。

无论如何,为防止/出现在捕获组中,请将其移出组(使用正则表达式文字):

var patt = /(?=\/st-(.*?)\/)/;

我认为不需要前瞻,您可以使用否定字符类而不是惰性量词:

var patt = /\/st-([^/]+)/;
于 2013-07-07T21:27:47.117 回答
0

你的斜线在错误的地方:

var patt= new RegExp((?=/st-(.*?)/));
return patt.exec(url)[1];

您需要将其移到组外,以便它不包含在匹配数组中。

于 2013-07-07T21:27:54.113 回答
0
var expr = "search/warrington/st-album/title/3";
var regex = new RegExp( /\/st-(.*?)\// );
return regex.exec(expr)[1];

它应该工作

于 2013-07-07T21:38:38.820 回答