假设我有一个字符串“bbbX1cccY1dddA1Z1”
我使用正则表达式模式拆分,但拆分模式消失了。我想在输出中保留拆分的内容
错误输出
["bbb", "ccc", "ddd"]
需要的输出
["bbb", "X1", "ccc", "Y1", "ddd", "A1", "Z1"]
类似这个问题的东西 Split string into a list, but keeping the split pattern
答案 0 :(得分:1)
您可以在这里使用正则表达式
/(?=[A-Z])|(?<=\d)/
如果有 CAPITAL LETTER ON RIGHT SIDE
OR number on the left side
,下面的正则表达式将拆分字符串。
const str = "bbbX1cccY1dddA1Z1";
const result = str.split(/(?=[A-Z])|(?<=\d)/);
console.log(result);
如果将 CAPITAL LETTER and a number
组合在一起,则下面的正则表达式将起作用...
const str = "bbbX1cccY1dddA1Z1";
const result = str.split(/([A-Z]\d)/).filter(s => s);
console.log(result);
答案 1 :(得分:0)
假设您的分隔符模式为 [A-Z]1
,您可以选择以下任一选项
使用组合的正向前瞻和后视来分隔分隔符之前或之前的字符串
str.split(/(?=[A-Z]1)|(?<=[A-Z]1)/)
请注意,浏览器后视支持仍然是 reasonably patchy。如果您需要 Sarafi 支持(MacOS 或 iOS),请勿使用。
使用捕获组来包含分隔符并过滤掉空值
str.split(/([A-Z]1)/).filter(s => s.length)