javascript - 如何使用正则表达式忽略字符串替换中的某些单词

标签 javascript regex replace

我有一个包含 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 ,包括但我不想替换 .

任何人都可以帮助我从替换中排除或忽略以下项目

  1. <span class="red">
  2. </span>

输出应该是

现在这将用 <span class="red">Micro</span> 取代 Micros<span class="red">s</span>

以下是输出 enter image description here

最佳答案

您需要更改您的正则表达式,如下所示

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/

相关文章:

javascript - 尝试编辑字符串中的所有 <a>

javascript - C# 与 JavaScript(或 TypeScript)中的异步 "Task"结果代码流

javascript - 使用 ng-modal 更新工厂中的值

regex - 如何使用 Perl 将不可打印的 ascii 字符转换为可读文本

Javascript 正则表达式用包装 <p> 标签替换 textarea 中的换行符

r - 如何在 R 中用 NA 替换缺失的空格?

javascript - MEAN Stack,为什么express在url中保留带有#的路由

javascript - 代码并不总是在 PHP 联系表单页面中运行

c++ - 在 google-api-cpp-client 中构建专门的服务 API

python - 当且仅当它在输入字符串中找到枚举时,如何创建删除等于子字符串的元素的正则表达式模式?