Reputation: 703
For some reason, this answer I found for (supposedly) how to do it in php just gives me the wrong matches. It seems to add the dash, but also replace the capital letter with a copy of the remainder of the string, so I want "abcZxc" to turn into "abc-zxc", but instead it turns it into "abd-zxczxc"
This, plus a bunch of other variations, is what I've tried, but can't get it to work.
filterGroup = aNiceString;
console.log(filterGroup.replace(/[A-Z]+/g, "-1$'"))
Thanks
Upvotes: 4
Views: 10061
Reputation: 6460
Another variant which splits into an array which is joined again right away, this avoids the leading -
:
let result = "FooBarBaz.".match(/[A-Z][a-z]*/g).join('-').toLowerCase();
console.log(result);
Upvotes: 1
Reputation: 1550
Try the following:
var result = "fooBarBaz".replace(/([A-Z])/g, "-$1").toLowerCase();
console.log(result);
Upvotes: 25