正则表达式获取模式中的字符串列表

Fio*_*ite 1 javascript regex

我有一堆像这样的字符串:

.ls-resourceIcon .icon_xls_gif,.ls-resourceIcon .icon_xlt_gif,.ls-resourceIcon .icon_xlw_gif

我想把icon_和_gif之间的字符串放到逗号分隔的列表中,所以在这种情况下"xls,xlt,xlw"(我可以修剪尾随的逗号).

我到目前为止得到了这个:

var regex = new RegExp("^.*icon_(.*)_gif.*$", "g");
var result = input.replace(regex, "$1,");
Run Code Online (Sandbox Code Playgroud)

但这给了我

XLW,

结果,不是所有的比赛.

我错过了什么?有没有更简单的方法来做到这一点,我没有注意到?

dun*_*can 5

你的正则表达式是贪婪的,所以领先者.*将抓住所有东西直到决赛icon_xlw_gif.你需要让双方都不贪婪.这可能有效:

var regex = new RegExp("icon_([A-Za-z]*)_gif", "g");
Run Code Online (Sandbox Code Playgroud)

删除前导和尾随 .*

也取代了(.*)我认为现在也不会像你想象的那样工作.