我有很多这样的字符串:
.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,
因此,并非所有比赛。
我错过了什么?有没有更容易的方法来做到这一点,我没有注意到?
答案 0 :(得分:5)
你的正则表达式是贪婪的,所以领先的.*
会抓住所有内容直到最后icon_xlw_gif
。你需要让双方都不贪婪。这可能有效:
var regex = new RegExp("icon_([A-Za-z]*)_gif", "g");
删除前导和尾随.*
还替换了(.*)
,我认为现在也不会像你想象的那样工作。