Sun*_*nny 2 javascript regex camelcasing
我已经通过类似的帖子,但没有一个处理这个特定的情况.我想将一些旧的命名约定转换为类似驼峰的情况.但是,我希望转换仅限于以下内容:
一个字符串(在任何情况下由数字或数字组成)后跟一个下划线后跟一个字母表应该被相同的字符串替换,后面跟着相同的字母,但只有大写字母.而已.
一些例子:
aXc9tu_muKxx -> aXc9tuMuKxx
zdmmpFmxf -> zdmmpFmxf //unchanged
_xfefx -> _xfefx //unchanged
Z_9fefx -> Z9fefx //EDITED after getting answers.
Run Code Online (Sandbox Code Playgroud)
因此,如果 ?在正则表达式中意味着出现1次或多次而[]用于指定字符范围,那么我可以想象源表达式将是:([0-9a-zA-Z])?_([0-9a -Za-Z])?
我愿意使用Javascript或任何Linux工具.我再次重申,转换只涉及两个字符_和紧随其后的字母,如果它确实是一封信._将被删除,信件将是大写的.如果它不是字母而是数字,则只删除下划线.
目标是转向骆驼案例,但保持旧命名约定的可读性,转换后可读性可能会受到损害.例如,THIS_IS_A_CONSTANT不会更改为THISISACONSTANT.
您可以使用Replacement回调:
function toCamelCase(str) {
return str.replace(/(?!^)_([a-z])/g, function(matches) {
return matches[1].toUpperCase();
});
}
Run Code Online (Sandbox Code Playgroud)
正则表达式的解释:
(?!^)- 在字符串的开头不匹配(你的"_xfefx"例子)
_- 匹配下划线(duh ...)
([a-z])- 匹配一个小写字母并在组1中捕获,matches[1]
/.../g- "全局"匹配,即不仅替换第一个而是全部出现