split function is not working with the regex provided

Viewed 43

this is my take on the problem. i have successfully passed 3/4. the only thing messing up my solution is that extra white space after ‘telebubbles’. how do i progress further? i’m not good with replace.

function spinalCase(str) {
let k=str.split(/[\s-_]?(?=[A-Z])/g).join('-').toLowerCase()
console.log(k)
return k
}

spinalCase('This Is Spinal Tap');//passed
spinalCase("thisIsSpinalTap")//passed
spinalCase("The_Andy_Griffith_Show")//passed
spinalCase("Teletubbies say Eh-oh")//not working
spinalCase("AllThe-small Things")//passed

1 Answers

You may use this regex to fix your problem:

/\s+|[-_]*(?=[A-Z])/

Code:

function spinalCase(str) {
    let k = str.split(/\s+|[-_]*(?=[A-Z])/g).join('-').toLowerCase();
    console.log(k);
    return k;
}

spinalCase('This Is Spinal Tap'); //passed
spinalCase("thisIsSpinalTap"); //passed
spinalCase("The_Andy_Griffith_Show"); //passed
spinalCase("Teletubbies say Eh-oh"); //passed
spinalCase("AllThe-small Things"); //passed

RegEx Details:

  • \s+: Match 1+ whitespaces
  • |: OR
  • [-_]*(?=[A-Z]): Match 0 or more of underscore or hyphen if that followed by an uppercase letter
Related