JQuery – 更改文本中字符串的颜色,忽略之间的

我需要更改文本中特定子字符串的颜色。 文字如下:

SOME TE
XT IS HER
E.

我厌倦了jquery的.replace()函数,它的问题在于,正如你在上面看到的那样,文本与那些
分开了。 我怎么能“忽略”他们呢? 例如,我想用TEXT替换String TEXT

有没有人知道如何解决这个问题?

不需要jQuery。 虽然我根本没有测试这个,所以可能需要调整。

 var customReplace = function(str, subStr, color) { var words = str.split(' '); for (var i = words.length - 1; i >= 0; i--) { var word = words[i].replace(/
/g, ''); if (word === subStr) { words[i] = '' + words[i] + ''; } } return words.join(''); }

我认为一个好主意可能会像下面这样:

  1. 精确所有文本节点并将它们包装在一个span中
  2. 重新插入所有标签
 var ALL_TAGS_REGEX = /(.+)(<{1}\/{0,1}.+>{1})/g; document.addEventListener("DOMContentLoaded", function() { document.body.innerHTML = document .body .innerHTML .replace(ALL_TAGS_REGEX, '$1$2') ; }); 
 .highlight { background: cyan; } 
 I am a string,
something else but no text node
Other text nodes at libitum

标签是中断的,颜色不适用于文本,这在最终的html渲染时不会被视为普通文本