我有一个包含 5 到 6 个单词的字符串,我想用荧光笔样式替换一些单词。
$(document).ready(function() {
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
arr.forEach(function(item) {
str = str.replace(new RegExp(item.replace(/\+/g, "\\+"), "g"), '<span class="red">'+ item +'</span>');
})
$('#dvHtml').html(str);
});
但是我得到了整个字符串中的每个 s ,包括但我不想替换 .
任何人都可以帮助我从替换中排除或忽略以下项目
-
<span class="red">
-
</span>
输出应该是
现在这将用 <span class="red">Micro</span>
取代 Micro和 s 与 <span class="red">s</span>
以下是输出
最佳答案
您需要更改您的正则表达式,如下所示
var str = "Micromax Samsung S3 Microsoft Galaxy S";
var arr = ["Micro", "s"];
var t = str.replace(new RegExp('\\b('+arr.join('|')+')',"gi"), '<span class="red">$1</span>');
$('#dvHtml').html(t);
在此
\b
- 在开始单词中查找arr.join('|')
- 返回类似a|b
的字符串 - 因此找到其中任何一个gi
-全局
和忽略大小写
的标志
你可以试试 JSFiddle
关于javascript - 如何使用正则表达式忽略字符串替换中的某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835481/