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

求助:如何用正则表达式提取括号内的整数或浮点数?

解决括号内浮点数/整数的正则提取问题

嘿,看起来你在提取括号内数字的时候踩了正则的小坑,我来给你梳理下正确的解决方案:

核心问题分析

你之前的两个正则都没精准命中“括号内的数字”这个需求:

  • 第一个正则([0-9]*[.])?[0-9]+没有限定匹配范围,所以会抓字符串里第一个出现的数字,而不是括号里的;
  • 第二个/\((\d+)\)/只能匹配整数,遇到浮点数就会失效,返回0大概率是因为没匹配到内容,代码返回了默认值。

正确的正则方案

根据你的需求,我给你两个实用的正则,按需选择:

1. 匹配单个括号内的数字(整数/浮点数)

如果你的文本里每个括号只包含一个数字(比如测试文本(6.8) 其他(9)),用这个正则:

\(([0-9]*\.?[0-9]+)\)

规则拆解:

  • \( 和 \):转义匹配左右括号,确保我们只抓括号内部的内容;
  • ([0-9]*\.?[0-9]+):捕获组,专门匹配整数和浮点数:
    • [0-9]*:允许小数点前没有数字(比如.5这种合法浮点数);
    • \.?:匹配0个或1个小数点(兼容整数);
    • [0-9]+:确保至少有一个数字,避免匹配空括号或只有小数点的情况。

使用时取捕获组1的内容,就是括号里的目标数字了。

2. 批量提取所有括号内的数字

如果你的文本里有多个带数字的括号(比如数值A(3.14) 数值B(100) 数值C(.78)),用全局匹配版本(不同语言的全局匹配写法略有不同):

\(([0-9]*\.?[0-9]+)\)

比如在Python里用re.findall,会直接返回所有匹配到的数字列表;在JS里加g标志循环提取即可。

示例代码

Python 版本

import re
text = "示例文本(6.8) 其他内容(9) 还有(.5)"
results = re.findall(r'\(([0-9]*\.?[0-9]+)\)', text)
print(results)  # 输出: ['6.8', '9', '.5']

JavaScript 版本

const text = "示例文本(6.8) 其他内容(9) 还有(.5)";
const regex = /\(([0-9]*\.?[0-9]+)\)/g;
const results = [];
let match;
while ((match = regex.exec(text)) !== null) {
  results.push(match[1]);
}
console.log(results); // 输出: ['6.8', '9', '.5']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:33:02