如何在单引号和双引号外用<span> + </span>标记替换加号(+)?

时间:2017-06-19 22:25:39

标签: javascript regex

我正在使用实时代码编辑器进行语法突出显示。here the example image

这里是字符串代码的例子:

//之前。

var x = 'person + arthur' + "family + all";

// after。

var x = 'person + arthur' <span style="color:red;">+</span> "family + all";

我正在使用:

var x = string.replace(/\+/g,'<span style="color: red;">+</span>'); // but this replace all.

我只需要在单引号和双引号之外替换。

我使用Get .innerText,以避免在正则表达式中发生冲突。

1 个答案:

答案 0 :(得分:1)

试试这个:

&#13;
&#13;
str = `var x = 'person + arthur' + "family + all";`;

str = str.replace(/(['"])[^'"]*\1|[-*\/%+]/g, x => (x.length == 1) ? '<span style="color:red;">' + x + '</span>' : x);


console.log(str)
&#13;
&#13;
&#13;

Regex101上试用。

基本上正则表达式匹配所有字符串,使不在引号内的字符[-*\/%+]可以自由匹配。