我的简单正则表达式替换功能根本不起作用

时间:2018-04-17 19:07:20

标签: javascript regex

这个功能的想法是通过使用正则表达式捕获组捕获大写字母,进行修改然后重新插入它们,将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'));




1 个答案:

答案 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();
    }
}