gpt4 book ai didi

javascript - 改变烤肉串案例正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:39:22 25 4
gpt4 key购买 nike

我正在使用以下 toKebabCase()功能:

function toKebabCase(key) {
return key.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)
.map((word) => word.toLowerCase())
.join('-');
}

console.log(toKebabCase('namespaceGray100Light'));

不过,它的行为并不完全符合我的意愿。现在,如果我通过 'namespaceGray100Light'作为参数,函数返回 'namespace-gray100-light' .这个正则表达式需要如何修改才能返回 'namespace-gray-100-light' .
为了澄清,我希望在数字跟在字母字符之后引入连字符,而不仅仅是在数字在字母字符之前引入。
泰。

最佳答案

您需要删除 [0-9]*从模式:

function toKebabCase(key) {
return key.match(/[A-Z]{2,}(?=[A-Z][a-z]+|\b)|[A-Z]?[a-z]+|[A-Z]|[0-9]+/g)
.map((word) => word.toLowerCase())
.join('-');
}
console.log(toKebabCase('namespaceGray100Light'));

regex demo .
请注意,您的正则表达式有两次出现 [0-9]* :
  • (?=[A-Z][a-z]+[0-9]*|\b) - 这里,[0-9]*是多余的,因为它可以匹配零个字符、一个空字符串,并且位于前瞻替代
  • 的末尾
  • [A-Z]?[a-z]+[0-9]* - 这里,[0-9]*使用字母单词后的数字,但这正是您需要添加 - 的地方介于两者之间。数字将与 [0-9]+ 匹配最后的选择。
  • 关于javascript - 改变烤肉串案例正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67177515/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com