这个功能的想法是通过使用正则表达式捕获组捕获大写字母,进行修改然后重新插入它们,将camelCase转换为脊柱。捕获组有效但替换功能没有,我开始得到正则表达式偏头痛。
function spinalCase(str) {
var regexp = /([A-Z]{1})/g;
var match;
var matches = "";
var myRegexp;
while ((match = regexp.exec(str)) != null) {
matches = "-" + match[1].toLowerCase();
//matches = "t", "i", "s", "t"
myRegexp = new RegExp(match[1], "g");
str.replace(myRegexp, matches);
}
return str;
//returns the original string without modifications
}
console.log(spinalCase('ThisIsSpinalTap'));

答案 0 :(得分:1)
整个功能可以用ES6中的简单单线代替:
var spinalCase = str => str.replace(/[A-Z]/g, match => '-' + match.toLowerCase());
前ES6(但由于提升规则而不完全相同):
function spinalCase(str) {
return str.replace(/[A-Z]/g, function(match) {
return '-' + match.toLowerCase();
}
}