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

如何编写接收string类型参数val、提取数字返回number的JS函数

JS提取字符串中数字的实现方案

原有实现问题

当前写法存在几个核心问题,无法匹配预期结果:

  • 正则/[^\d]+/g会把小数点.也作为非法字符过滤,导致带小数的输入无法正确解析
  • 直接返回字符串替换结果,没有做Number类型转换
  • 没有处理无有效数字的场景,全非数字输入无法返回预期的NaN

符合预期的实现代码

实现逻辑:先过滤掉所有非数字、非小数点的字符(逗号、字母等都会被直接移除,匹配n1,5 => 15的要求),再判断是否存在有效数字片段,最后转成数字返回即可。

function extractNumber(val) {
  // 移除所有数字、小数点之外的字符
  const validNumStr = val.replace(/[^\d.]/g, '');
  // 无有效数字片段直接返回NaN
  if (!validNumStr) {
    return NaN;
  }
  // 转为数字类型返回
  return Number(validNumStr);
}

结果验证

对应给出的预期用例,运行结果完全匹配:

  • 输入'oo':过滤后为空字符串,返回NaN
  • 输入'57o':过滤后为'57',返回57
  • 输入'n1.5':过滤后为'1.5',返回1.5
  • 输入'n1,5':逗号被过滤,剩余'15',返回15

补充说明:如果输入存在多个小数点(比如'1.2.3'),Number转换会自动返回NaN,符合非法数字格式的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:09:58