2015-10-05 150 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"