我有像这样的驼峰式字符串:
"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/