首页 > 解决方案 > Javascript:从替换中的正则表达式中排除

问题描述

在这个正则表达式中:

let str = "hello 〔world〕,foo、bar。";
str.replace(/(〔(.*?)〕|(、)|(,)|(。))/gi,'<div>$1</div>');

如何从结果中排除这两个方括号“〔”和“〕”?

为了得到这个结果:

"hello <div>world</div><div>,&lt;/div>foo<div>、&lt;/div>bar<div>。&lt;/div>"

标签: javascriptregexreplace

解决方案


您可以使用两个组,而不是使用单个组。在基于组的回调中,您可以相应地返回值

let str = "hello 〔world〕,foo、bar。";
str = str.replace(/〔(.*?)〕|((…)|(。)|(,)|(、))/gi,(match,g1,g2)=>`<div>${g1 ? g1 : g2}</div>`);

console.log(str)


推荐阅读