2015-10-05 197 views
1

我想大寫除匹配模式外的所有字符。匹配除匹配(多字)模式以外的所有字符

模式:

abc* 

輸入:

xyz a56abccc 789def 

結果:

XYZ A56abccc 789DEF 

是否有可能在JavaScript?

+0

爲什麼結果包括,當它不應該被轉換爲大寫'A'? – anubhava

+0

他意味着只在第二個單詞的末尾指向令牌。 :( –

回答

1

你可以使用一個超前基於函數:

var s = 'xyz a56abccc 789def'; 

var r = s.replace(/(?![abc])[a-z]/g, function($1) { return $1.toUpperCase(); }); 
//=> "XYZ a56abccc 789DEF" 

(?![abc])[a-z]將匹配任何小寫字母,除非是他們中的一個在列表中即[abc]

+0

[測試](https://regex101.com/r/qB5fK8/)似乎沒有通過。 –

+0

我的正則表達式是'(?![abc])[az]'.OP沒有響應我問的問題 – anubhava

+0

對不起,[測試](https://regex101.com/r/qB5fK8/1)應該是一個較舊版本 –

0

這是上面的一個修改版本通過test

(?![abc]+\b)[a-z] 

var s = 'xyz a56abccc 789def'; 

var r = s.replace(/(?![abc]+\b)[a-z]/g, function($1) { return $1.toUpperCase(); }); 
//=> "XYZ A56abccc 789DEF"