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

如何在JavaScript中不使用正则从字符串提取数字?

JavaScript非正则提取字符串中的数字方法

当然可以不用正则表达式提取字符串中的数字,下面是几个简洁实用的方案:

方案1:筛选所有数字字符并拼接

这种方法会提取字符串中所有数字字符并拼接成一个完整数字,适合需要整合所有数字的场景:

const extractNumber = str => {
  const numChars = Array.from(str).filter(char => char >= '0' && char <= '9');
  const numStr = numChars.join('');
  return numStr ? Number(numStr) : NaN;
};

// 测试示例
console.log(extractNumber("id is 12345")); // 输出 12345
console.log(extractNumber("num: 123, code: 456")); // 输出 123456

方案2:提取第一组连续数字

如果只需要提取字符串中第一组连续的数字,可以通过定位数字的起始和结束位置来实现,效率更高:

function extractFirstNumber(str) {
  let startIdx = -1;
  let endIdx = -1;

  for (let i = 0; i < str.length; i++) {
    const char = str[i];
    if (char >= '0' && char <= '9') {
      if (startIdx === -1) startIdx = i;
      endIdx = i;
    } else if (startIdx !== -1) {
      // 遇到非数字且已找到数字起始,终止循环
      break;
    }
  }

  return startIdx !== -1 ? Number(str.slice(startIdx, endIdx + 1)) : NaN;
}

// 测试示例
console.log(extractFirstNumber("id is 12345")); // 输出 12345
console.log(extractFirstNumber("num: 123, code: 456")); // 输出 123

方案3:遍历拼接(基础写法)

如果喜欢更直观的遍历逻辑,也可以用普通循环逐个收集数字字符:

function extractNumber(str) {
  let numStr = '';
  for (const char of str) {
    if (char >= '0' && char <= '9') {
      numStr += char;
    }
  }
  return numStr ? Number(numStr) : NaN;
}

// 测试示例
console.log(extractNumber("id is 12345")); // 输出 12345

这些方法都不需要依赖正则表达式,逻辑清晰且易于调整,可根据实际需求选择合适的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:59:56