正则表达式,用于在术语之后和另一个术语之前查找单词

时间:2013-07-07 21:19:44

标签: javascript regex

当前网址是

search/warrington/st-album/title/3

我需要在st-之后获取值,而在/之后不需要。所以在这种情况下,我只想返回album

我正在使用下面的表达式

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

这会返回album/

在上述情况下,有人可以让我知道正确的表达式吗?即仅返回album而非album/

3 个答案:

答案 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];

它应该有用