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

如何用单个JavaScript正则表达式按指定不同长度分割字符串?

用单个正则表达式实现固定长度分段提取

当然可以用单个正则表达式一次性搞定这个分段需求!你只需要把每个固定长度的段都用捕获组包裹起来,让正则一次性匹配并提取所有需要的部分。

正则表达式方案

直接使用这个正则就能精准匹配你要的分段:

^(.{8})(.{14})(.{10})(.{10})(.{4})$

正则解释:

  • ^ 和 $:确保正则匹配整个字符串,避免只匹配到部分内容
  • (.{8}):第一个捕获组,匹配并提取前8个字符
  • (.{14}):第二个捕获组,提取接下来的14个字符
  • (.{10}):第三、第四个捕获组,分别提取两段10字符的内容
  • (.{4}):最后一个捕获组,提取末尾4个字符

代码示例(以JavaScript为例)

const originalStr = "12345678ABCDEFGHIJKLMN2018/05/202018/05/30ABCD";
const segmentRegex = /^(.{8})(.{14})(.{10})(.{10})(.{4})$/;
const matchedResult = originalStr.match(segmentRegex);

if (matchedResult) {
  // 捕获组从索引1开始,索引0是整个匹配的完整字符串
  const formattedOutput = `${matchedResult[1]} (8 chars) ${matchedResult[2]} (14 chars) ${matchedResult[3]} (10 chars) ${matchedResult[4]} (10 chars) ${matchedResult[5]} (4 chars)`;
  console.log(formattedOutput);
}

运行这段代码会输出你想要的结果:

12345678 (8 chars) ABCDEFGHIJKLMN (14 chars) 2018/05/20 (10 chars) 2018/05/30 (10 chars) ABCD (4 chars)

小提示

如果你的原始字符串可能存在长度不刚好等于46(8+14+10+10+4)的情况,可以根据需求调整正则:

  • 如果允许末尾有多余字符:把$去掉,改成^(.{8})(.{14})(.{10})(.{10})(.{4})
  • 如果只需要提取前面的分段,不管后面内容:可以在末尾加.*,即^(.{8})(.{14})(.{10})(.{10})(.{4}).*$

内容的提问来源于stack exchange,提问作者marchello

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:25:05