【发布时间】:2016-10-14 08:31:47
【问题描述】:
我正在尝试将整个 HTML 页面中“bad”的字体颜色替换为红色,但有两个主要问题,首先它在替换之前重复了整个句子,我不希望这样,而且“badly”中的不好也被替换了,但我只想替换“坏”一词中的字体。我该怎么做?这是我的代码
window.onload = function() {
var text = document.getElementById("content");
var str = text.innerHTML,
reg = /red/ig;
var toStr = String(reg);
var color = (toStr.replace('\/g', '|')).substring(1);
var colors = color.replace("|");
if (colors.indexOf("red") > -1) {
str = str.replace(/bad/g, '<span style="color:red;">bad</span>');
}
document.getElementById("updated").innerHTML = str;
}
<div id="content">are they good or bad, tell me how badly it is if bad.</div>
<div id="updated"></div>
【问题讨论】:
-
使用
\b或其他任何方式在“红色”周围放置“单词边界”。这样可以防止redemption被破坏。 -
您可能希望将 div 的内容分解为一组单词,然后单独处理每个单词。你应该可以这样做: var ih = document.getElementById('content').innerHTML;var words = ih.split(/\b/g);for(var i=0;i
-
\b 帮助解决了“坏”的边界,但我仍然没有找到解决重复的方法。 @MarcB
-
"首先它会在替换之前重复整个句子,我不希望这样"...这是什么意思?
标签: javascript regex str-replace