/*jQuery的camelCase*/
fcamelCase = function( all, letter ) {
return letter.toUpperCase();
};
var str = "ms-abc-def-mgh";
alert(str.replace( /(-[\da-z])/gi, fcamelCase ));//ms-Abc-Def-Mgh
fcamelCase = function( all, letter ) {
return letter.toUpperCase();
};
var str = "ms-abc-def-mgh";
alert(str.replace( /(-[\da-z])/gi, fcamelCase ));//ms-Abc-Def-Mgh
alert(str.replace( /-([\da-z])/gi, fcamelCase ));//msAbcDefMgh
两个正则表达式很相近。但是结果却不相同,原因:当replace第二个参数传入的是一个函数时,
正常情况这个函数包含三个参数:第一个参数表示匹配到的字符,第二个参数表示匹配到的字符最小索引位置(RegExp.index),第 三个参数表示被匹配的字符串(RegExp.input)
当正则中有小括号进行分组时,这个函数包含四个参数:第一个参数表示匹配到的字符,第二个参数表示分组中匹配到的字符串,第 三个参数匹配到的字符最小索引位置(RegExp.index),第四个参数表示被匹配的字符串(RegExp.input)
所以执行第一个正则时:参数all:‘-a’ letter:'-a' -->return ‘-A’
执行第二个正则时:参数all:'-a' letter:'a' -->return 'A'