开发者

Regex to get a list of strings within a pattern

开发者 https://www.devze.com 2023-02-05 05:26 出处:网络
I have a load of strings like this: .ls-resourceIcon .icon_xls_gif, .ls-resourceIcon .icon_xlt开发者_JS百科_gif,

I have a load of strings like this:

.ls-resourceIcon .icon_xls_gif, .ls-resourceIcon .icon_xlt开发者_JS百科_gif, .ls-resourceIcon .icon_xlw_gif

I want to get the strings between icon_ and _gif into a comma separated list, so in this case "xls,xlt,xlw," (I can trim the trailing comma).

I have so far got this:

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

but that gives me

xlw,

as a result, not all the matches.

What am I missing? Is there an easier way to do this that I haven't noticed?


Your regex is greedy, so the leading .* will grab everything up until the final icon_xlw_gif. You need to make both sides non-greedy. This might work:

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

Remove the leading and trailing .*

Also replaced the (.*) with I think also now wouldn't work the way you intended it.

0

精彩评论

暂无评论...
验证码 换一张
取 消