它可以是任何字符串,它应该只匹配大写部分并更改为小写,例如:
"It's around August AND THEN I get an email"
成为
"It's around August and then I get an email"
您可以看到It's
,August
和I
这个词应该被忽略
答案 0 :(得分:15)
使用/\b[A-Z]{2,}\b/g
匹配所有大写字词,然后.replace()
使用小写匹配的回调。
var string = "It's around August AND THEN I get an email",
regex = /\b[A-Z]{2,}\b/g;
var modified = string.replace(regex, function(match) {
return match.toLowerCase();
});
console.log(modified);
// It's around August and then I get an email
另外,请随意使用更复杂的表达方式。这个将寻找长度为1+的大写单词" I"作为例外(我也做了一个看一个句子的第一个单词不同的,但是这个更复杂,并且需要在回调函数中更新逻辑,因为你仍然希望首字母大写):
\b(?!I\b)[A-Z]+\b
答案 1 :(得分:5)
没有正则表达式的解决方案:
function isUpperCase(str) {
return str === str.toUpperCase();
}
var str = "It's around August AND THEN I get an email";
var matched = str.split(' ').map(function(val){
if (isUpperCase(val) && val.length>1) {
return val.toLowerCase();
}
return val;
});
console.log(matched.join(' '));