You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中按指定规则拆分长度不一致的字符串

实现方案

你可以通过正则分组的方式快速实现需求,也可以手动查找数字起始下标完成拆分,两种方案的效果一致:

方案1:正则分组实现(推荐)

你的拆分规则刚好可以对应5个正则捕获组,直接匹配提取即可:

let string = "ansdl001,badgef001,abcdeh002,mfghe002";
let array = string.split(",");
// 正则规则:前3个分组各匹配单个字母,第4个分组匹配数字前的剩余字母,第5个分组匹配末尾数字
const splitReg = /^([a-z])([a-z])([a-z])([a-z]+)(\d+)$/i;

const result = array.map(item => {
  const matchRes = item.match(splitReg);
  // 跳过索引0的完整匹配结果,取后面5个分组的内容
  return matchRes.slice(1);
})

console.log(result);

运行输出结果:

[
  [ 'a', 'n', 's', 'dl', '001' ],
  [ 'b', 'a', 'd', 'gef', '001' ],
  [ 'a', 'b', 'c', 'deh', '002' ],
  [ 'm', 'f', 'g', 'he', '002' ]
]

注:你示例中给出的最后一项末尾数字是003属于笔误,实际按输入字符串会输出002。

方案2:手动查找数字下标实现

如果不想用正则,也可以手动遍历找到第一个数字的位置再拆分:

let string = "ansdl001,badgef001,abcdeh002,mfghe002";
let array = string.split(",");

function splitSingleItem(item) {
  // 查找第一个数字出现的下标
  const firstNumIndex = item.search(/\d/);
  return [
    item[0],
    item[1],
    item[2],
    item.slice(3, firstNumIndex),
    item.slice(firstNumIndex)
  ]
}

const result = array.map(splitSingleItem);
console.log(result);

内容的提问来源于stack exchange,提问作者Hassan Ali Amjad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 05:27:04