以下示例显示了如何将匹配的单词替换为大写。
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();
});
console.log(res);输出是
Blue先生有一个BLUE HOUSE和一个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();
});
答案 0 :(得分:3)
匹配一个单词的开头(单词边界,用\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
不会被匹配)。
!
在正则表达式中没有什么意义,它只与文字!
相匹配,而您的字符串在任何地方都不包含
答案 1 :(得分:0)
您可以不使用正则表达式。首先在每个空格上进行分割,然后检查其是否与这些单词匹配或不改变大小写
command not found
答案 2 :(得分:0)