从含分隔符的字符串中提取含小数数字的正则表达式需求
解决提取带小数数字的正则问题
嘿,这个需求我太熟悉了!之前用\d+确实只能抓纯整数,碰到带小数点的数字就会被拆分开,咱们调整下正则表达式就能完美解决。
推荐正则表达式
直接用这个就行:
/\d+\.?\d*|\.\d+/g
为什么这个正则能行?
咱们拆解一下它的逻辑:
\d+:匹配一个或多个连续数字(对应数字的整数部分)\.?:匹配可选的小数点(问号表示这个符号可以出现0次或1次)\d*:匹配可选的小数部分(星号表示可以有0个或多个数字)|:逻辑“或”,用来兜底处理那种只有小数部分的情况(比如.7这种格式)\.\d+:匹配以小数点开头、后面跟数字的纯小数
实际测试例子
测试你给出的两个场景:
- 处理整数格式字符串:
var word = "9-6x3"; console.log(word.match(/\d+\.?\d*|\.\d+/g)); // 输出: ['9', '6', '3']
- 处理带小数的字符串:
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
相关产品推荐
相关产品推荐

