kas*_*ega 8 javascript regex jquery
给定一个字符串就像Marty Mcfly有一个正则表达式或其他一行解决方案来大写'f'所以我得到了Marty McFly?
我总是可以指望第一个和最后一个之间的空格,而姓氏的第一个字母(即M)将始终是大写字母.
我对任何javascript,jquery,正则表达式解决方案都非常开放,我只需要简短而甜蜜.
我有一个方法,使用indexOf和substring将字符串分开,但我希望有一个正则表达式或类似的东西.
您可以利用其形式String.replace将函数作为其第二个参数:
function fixMarty(s) {
return (""+s).replace(/Mc(.)/g, function(m, m1) {
return 'Mc' + m1.toUpperCase();
});
}
fixMarty('Marty Mcfly'); // => "Marty McFly"
fixMarty("Mcdonald's"); // => "McDonald's"
Run Code Online (Sandbox Code Playgroud)
这是使用回调的完美案例.replace().
function fixMc(str) {
return(str.replace(/\bMc(\w)/, function(match, p1) {
return(match.slice(0, -1) + p1.toUpperCase());
}));
}
Run Code Online (Sandbox Code Playgroud)
这里有一个jsFiddle http://jsfiddle.net/jfriend00/Qbf8R/,你可以在几个不同的测试用例中看到它.
通过解释回调如何工作,参数match是整个正则表达式匹配,参数p1是第一个带括号的组匹配的,回调返回你想要用整个正则表达式匹配的内容.