2015-08-27 43 views
4

它可以是任意的字符串爲小寫,它應該只匹配大寫的部分,改爲小寫,例如:如何改變大寫與正則表達式的JavaScript

"It's around August AND THEN I get an email"

成爲

"It's around August and then I get an email"

正如你所看到的單詞It's,AugustI應該被忽略

+0

「大寫部分」 ??哪些是分隔符? –

+0

你有什麼參數可以定義什麼應該被忽略/不被忽略? –

+0

爲什麼要把'這是八月我'忽略?那裏有沒有隱藏的要求?比如,應該保留句子的第一個單詞,月份名稱...... –

回答

11

使用/\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 
6

沒有正則表達式中的溶液:

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(' '));

+0

很酷,這個解決方案對於我遇到的另一個問題很有用,謝謝! –