javascript - 如何拆分包含数字的驼峰式字符串

标签 javascript regex

我有像这样的驼峰式字符串:

"numberOf40"
"numberOf40hc"

这样怎么拆分呢?

["number", "Of", "40"]
["number", "Of", "40hc"]

我正在使用 humps对键进行 decamelize,因此我只能将 split 正则表达式作为选项传递。我正在寻找仅使用 split 函数的答案。

我最好的尝试:

const a = "numberOf40hc"

a.split(/(?=[A-Z0-9])/)
// ["number", "Of", "4", "0hc"]

a.split(/(?=[A-Z])|[^0-9](?=[0-9])/)
// ["number", "O", "40hc"]

我也不明白为什么在我上次尝试时省略了 f

最佳答案

你在上次尝试中没有得到 f (?=[A-Z])|[^0-9](?=[0-9]) 作为最后一个模式的这一部分 [^0-9] 匹配除数字以外的单个字符,并将在该字符上拆分。

你也可以匹配而不是拆分

const regex = /[A-Z]?[a-z]+|\d+[a-z]*/g;

[
  "numberOf40",
  "numberOf40hc"
].forEach(s => console.log(Array.from(s.matchAll(regex), m => m[0])));

仅使用 split,您可以将 lookarounds 与获得更多浏览器支持的 lookbehind 结合使用。

const regex = /(?=[A-Z])|(?<=[a-z])(?=\d)/g;

[
  "numberOf40",
  "numberOf40hc"
].forEach(s => console.log(s.split(regex)));

关于javascript - 如何拆分包含数字的驼峰式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66641452/

相关文章:

JavaScript 匹配任何字母字符

regex - mod_rewrite:用破折号替换下划线

.net - 在 .NET 中转义正则表达式?

javascript - 使用引用字段更新 contentful 中的条目

javascript - 如何将 ELSE 添加到要追加的 IF 语句

javascript - 如何将第 n 到第 n 个元素包装在 div 中

php - 在数组中拆分 mysql 查询,每个查询由 ";"分隔

javascript - 将同步 firebase 函数重写为异步

javascript - 如何在浏览器中打印时添加页码

regex - 用操纵模式替换多个模式