在所有匹配项中,Javascript替换为对匹配组的引用

时间:2015-09-23 06:15:54

标签: javascript regex

我的示例文字是:

'<div class="emoji-icons emoji-smile" e-type="smile" style="display:inline-block;" contenteditable="false"></div> is <div class="emoji-icons emoji-grinning" e-type="grinning" style="display:inline-block;" contenteditable="false"></div> very time.'

替换命令是:

text.replace(/<div class="emoji-icons (?:.*)" e-type="([a-z]*)"[^>]+><\/div>/ig, '$1')

我想用e-type属性值替换所有div标签。 结果必须是&#34;微笑是咧嘴笑的不同时间。&#34;

但是这个正则表达式不适用于所有匹配的并且可用于最后一场比赛。

有任何想法或建议吗?

1 个答案:

答案 0 :(得分:1)

您需要将(?:.*)"替换为(?:.*?)",而且不需要()所以只需使用.*?"

&#13;
&#13;
var text = '<div class="emoji-icons emoji-smile" e-type="smile" style="display:inline-block;" contenteditable="false"></div> is <div class="emoji-icons emoji-grinning" e-type="grinning" style="display:inline-block;" contenteditable="false"></div> very time.';

text = text.replace(/<div class="emoji-icons.*?" e-type="([a-z]*)"[^>]+><\/div>/ig, '$1')

document.write(text);
&#13;
&#13;
&#13;

  

。*?:在零和无限次之间,尽可能少的次数