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

从含分隔符的字符串中提取含小数数字的正则表达式需求

解决提取带小数数字的正则问题

嘿,这个需求我太熟悉了!之前用\d+确实只能抓纯整数,碰到带小数点的数字就会被拆分开,咱们调整下正则表达式就能完美解决。

推荐正则表达式

直接用这个就行:

/\d+\.?\d*|\.\d+/g

为什么这个正则能行?

咱们拆解一下它的逻辑:

  • \d+:匹配一个或多个连续数字(对应数字的整数部分)
  • \.?:匹配可选的小数点(问号表示这个符号可以出现0次或1次)
  • \d*:匹配可选的小数部分(星号表示可以有0个或多个数字)
  • |:逻辑“或”,用来兜底处理那种只有小数部分的情况(比如.7这种格式)
  • \.\d+:匹配以小数点开头、后面跟数字的纯小数

实际测试例子

测试你给出的两个场景:

  1. 处理整数格式字符串:
var word = "9-6x3";
console.log(word.match(/\d+\.?\d*|\.\d+/g)); 
// 输出: ['9', '6', '3']
  1. 处理带小数的字符串:
var word = "9.5-9.3x7";
console.log(word.match(/\d+\.?\d*|\.\d+/g)); 
// 输出: ['9.5', '9.3', '7']

额外优化(可选)

如果你的业务场景里不会出现.7这种开头的纯小数,只需要匹配整数或X.X格式的数字,也可以用更简洁的正则:

/\d+\.\d+|\d+/g

这个正则更严格,不会匹配单独的小数点或者.7这类格式,适合对输入格式有明确要求的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:07:47