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

JavaScript如何提取字符串中被|包裹的子串并返回指定格式数组

提取|包裹子串的最优实现方案

这种固定边界的字符串提取场景,最优方案是用正则表达式匹配,底层正则引擎做过优化,比手动遍历字符串拆分的执行效率更高,代码也更简洁易维护。

核心匹配逻辑:匹配两个|符号之间的、不包含|的非空内容,有两种常用写法:

  • 捕获组写法:正则为\|([^|]+)\|,匹配后提取第一个捕获组的内容即可,兼容性最好,所有支持正则的语言都可以用
  • 零宽断言写法:正则为(?<=\|)[^|]+(?=\|),可以直接匹配到目标内容,不需要额外提取捕获组,代码更简洁,需要语言正则引擎支持零宽断言

下面是不同常用语言的实现示例:

JavaScript 实现

const inputStr = "|hello| + |world| / |again|";
// 兼容所有JS环境的写法
const res1 = [...inputStr.matchAll(/\|([^|]+)\|/g)].map(item => item[1]);
// 支持ES2018+的环境可以用零宽断言写法
const res2 = inputStr.match(/(?<=\|)[^|]+(?=\|)/g);
// 输出结果:["hello", "world", "again"]

Python 实现

import re
input_str = "|hello| + |world| / |again|"
// 捕获组写法
res1 = re.findall(r'\|([^|]+)\|', input_str)
// 零宽断言写法
res2 = re.findall(r'(?<=\|)[^|]+(?=\|)', input_str)
// 输出结果:['hello', 'world', 'again']

如果业务场景中允许子串内部出现转义的\|,只需要把正则里的[^|]+替换为(?:\\.|[^|])+即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:10