javascript - 在 JavaScript 中查找和替换不匹配的单词

标签 javascript regex replace

下面的例子展示了如何将匹配的单词替换为大写。

var str = "Mr Blue has a blue house and a blue car.";
    var res = str.replace(/(blue|house|car)/g, function (x) {
        return x.toUpperCase();
      });

控制台日志(资源);输出是

Mr Blue has a BLUE HOUSE and a BLUE CAR.

但我需要将不匹配的单词大写。

MR BLUE HAS A blue house AND A blue car.

我尝试使用以下代码。但是它不起作用

var str = "Mr Blue has a blue house and a blue car.";
    var res = str.replace(/!(blue|house|car)/g, function (x) {
        return x.toUpperCase();
      });

最佳答案

匹配单词的开头(单词边界,带有 \b),对后跟单词边界的这三个单词进行否定前瞻,然后匹配单词字符并使用替换函数:

var str = "Mr Blue has a blue house and a blue car.";
var res = str.replace(/\b(?!blue\b|house\b|car\b)\w+/g, function(x) {
  return x.toUpperCase();
});
console.log(res);

这三个词末尾的词边界是必要的,这样 houses 才能正确匹配(只有 house 作为一个独立的词,不会匹配)。

! 在正则表达式中没有什么意义,它只会匹配文字 !,您的字符串不包含任何地方。

关于javascript - 在 JavaScript 中查找和替换不匹配的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54956803/

相关文章:

javascript - 为什么我的请求对象没有方法 `param` ?

javascript - 标签输入和提前输入 : Cannot read property 'apply' of undefined

javascript - 如何停止 Angular 合并不同的页面以使它们看起来相同?

java - 如何在Java中读取CSV文件到数组

C++ <algorithm> 替换所有不工作的事件

javascript - 在 Sublime Text 3 中对 Dart 进行编程,更改 dart-sdk 的路径

regex - 从 &lt;script&gt; 中提取的数据的 Url 正则表达式

asp.net - 连字符键值对序列的正则表达式

replace - 如何替换Julia中字符串中的多个字符

c - 如何获取文件中当前单词前后的单词?