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

如何使用正则表达式从字符串中提取id对应的指定文本内容

正确实现方案

先给出可直接运行的完整代码:

let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
// 正则匹配后提取捕获组内容
let res = Array.from(str.matchAll(/id\s*=\s*"([^"]*)"/g), match => match[1]);
console.log(res); // 输出:['Test This is','second','third-123']

如果需要兼容不支持matchAll的旧运行环境,也可以用exec循环实现:

let str = 'id = "Test This is" id ="second" abc 123 id ="third-123"';
let reg = /id\s*=\s*"([^"]*)"/g;
let res = [], match;
while((match = reg.exec(str)) !== null) {
  res.push(match[1]);
}
console.log(res);
正则规则说明
  • id\s*=\s*":匹配id="固定前缀,\s*兼容等号前后存在任意数量空格的场景
  • ([^"]*):核心捕获逻辑,匹配所有非双引号的字符,保证只会匹配到当前id对应的右双引号为止,不会出现跨段匹配的问题
  • g:全局匹配标识,遍历整个字符串提取所有符合规则的id内容
原正则错误原因
  • 否定字符组[^id ="\[]逻辑错误:否定字符组仅对单个字符生效,该写法仅能排除单个i、d、空格、等号、双引号、中括号字符,无法实现排除id="完整前缀的效果
  • .*为贪婪匹配模式,默认会匹配尽可能长的字符串,因此会直接从第一个匹配位置一直匹配到字符串末尾,导致只返回一个包含后续全部内容的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:15:01