这里是字符串代码的例子:
//之前。
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,以避免在正则表达式中发生冲突。
答案 0 :(得分:1)
试试这个:
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;
在Regex101上试用。
基本上正则表达式匹配所有字符串,使不在引号内的字符[-*\/%+]
可以自由匹配。