【问题标题】:split function is not working with the regex provided拆分功能不适用于提供的正则表达式
【发布时间】:2021-10-21 22:00:57
【问题描述】:

这是我对这个问题的看法。我已经成功通过了 3/4。唯一弄乱我的解决方案的是“telebubbles”之后的额外空白。我如何进一步进步?我不擅长替换。

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

【问题讨论】:

  • 也许试试这个? / |[\s-_]?(?=[A-Z])/g 此外,还有 5 个测试,而不是 4 个 :)
  • 试试.split(/[\s_-]?(?=[A-Z])|(?<=[a-zA-Z\d])\s+(?=[\dA-Za-z])/)
  • @thetailor.de 试过了。没用

标签: javascript regex replace split


【解决方案1】:

您可以使用此正则表达式来解决您的问题:

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

代码:

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

正则表达式详细信息:

  • \s+: 匹配 1+ 个空格
  • |:或者
  • [-_]*(?=[A-Z]):匹配 0 个或多个下划线或连字符(如果后跟大写字母)

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多