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

如何从任意位置提取字符串中的ESR数值?(Node.js+tesseract.js场景)

解决ESR数值提取问题

针对你遇到的两种字符串格式,用正则表达式可以完美适配,比split更灵活。以下是两种可靠的实现方式:

方法一:提取所有数字后取最后一个

适用于你的场景——目标数值要么是唯一数字,要么是字符串末尾的数字:

function extractESRValue(str) {
  // 匹配所有连续数字
  const numberMatches = str.match(/\d+/g);
  if (!numberMatches) return null; // 无数字时返回null
  // 返回最后一个匹配到的数字
  return numberMatches[numberMatches.length - 1];
}

// 测试验证
console.log(extractESRValue('ESR 14 fm')); // 输出 "14"
console.log(extractESRValue('ESR Less Than 10 mm/1st Hour 15')); // 输出 "15"

方法二:精准匹配两种场景

如果需要更严格的匹配(避免其他无关数字干扰),可以分别针对两种格式写正则:

function extractESRValue(str) {
  // 优先匹配字符串末尾的数字(对应第二种格式)
  const endNumber = str.match(/(\d+)\s*$/);
  if (endNumber) return endNumber[1];
  
  // 匹配ESR后的数字(对应第一种格式)
  const esrFollowNumber = str.match(/ESR\s+(\d+)/);
  if (esrFollowNumber) return esrFollowNumber[1];
  
  return null; // 无匹配时返回null
}

为什么split不行?

split依赖固定分隔符,第二种格式中ESR后的内容是Less Than 10...,用split('ESR ')拆分后再处理会拿到无关内容,正则则可以直接定位数字位置,不受中间文本影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:55:18