我有一堆像这样的字符串:
.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,
结果,不是所有的比赛.
我错过了什么?有没有更简单的方法来做到这一点,我没有注意到?
你的正则表达式是贪婪的,所以领先者.*将抓住所有东西直到决赛icon_xlw_gif.你需要让双方都不贪婪.这可能有效:
var regex = new RegExp("icon_([A-Za-z]*)_gif", "g");
Run Code Online (Sandbox Code Playgroud)
删除前导和尾随 .*
也取代了(.*)我认为现在也不会像你想象的那样工作.