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

regular expression to find word after a term and before another term

本文关键字:术语 之后 另一个 单词 一个 查找 用于 正则表达式      更新时间:2023-09-26

当前url为

search/warrington/st-album/title/3

我需要在st-之后得到值,而在/之后什么都不需要。所以在这个例子中,我只想返回album

我使用下面的表达式

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

但是,它返回album/

有人能告诉我在上面的例子中after和before的正确表达吗?即只返回album而不返回album/

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

无论如何,为了防止/出现在捕获组中,请将其移动到组外(使用regex文字):

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

我认为不需要前瞻性,您可以使用否定字符类来代替懒惰的量词:

var patt = /'/st-([^/]+)/;

您的斜杠位于错误的位置:

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

您需要将它移到组外,这样它就不会包含在匹配数组中。

var expr = "search/warrington/st-album/title/3";
var regex = new RegExp( /'/st-(.*?)'// );
return regex.exec(expr)[1];

它应该工作