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

时间:2011-01-19 09:37:10

标签: 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,");

但是这给了我

  

XLW,

因此,并非所有比赛。

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

1 个答案:

答案 0 :(得分:5)

你的正则表达式是贪婪的,所以领先的.*会抓住所有内容直到最后icon_xlw_gif。你需要让双方都不贪婪。这可能有效:

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

删除前导和尾随.*

还替换了(.*),我认为现在也不会像你想象的那样工作。

相关问题