javascript - Make name uppercase with multiple capital letters -


pretty straightforward concept, really. basically, want following:

    mcdonald => mcdonald     mcdowell => mcdowell     mcintosh => mcintosh     etc. 

i'm looking things iphone => iphone, i'm going use set list that. however, names change regularly, , inconvenience keep running list (even if cms).

is possible this? looking @ regex, couldn't think of way (make letter before second capital lowercase)

this seems work:

var convertname = function(name){   var pattern=/^(.*?[a-z][a-z])(.*)$/g;   if(pattern.test(name)){     return name.replace(pattern,function(t,a,b){       return a+b.touppercase();     });   }   else{     return name.touppercase();   } }; 

it looks first upper-case letter after first lower-case letter, separates first part rest , makes rest upper-case. happens, if such pattern found. otherwise returns name in upper-case.

usage

convertname('mcdonald'); // mcdonald convertname('mcdowell'); // mcdowell convertname('mcintosh'); // mcintosh convertname('iphone'); // iphone convertname('smith'); // smith 

replacing multiple instances

the simplest way matching every group of letters , putting function. can use:

"word, test, “words”, mcintosh name, herbert-mcintosh. upper-case.".replace(/(\w+)/g,function(t,w){   return convertname(w); }); // "word, test, “words”, mcintosh name, herbert-mcintosh. upper-case." //                                        prefix after dash ^^^ 

Comments