下面的例子展示了如何将匹配的单词替换为大写。
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/