使用方法
- 打开本页,输入框已预填一段含订单号、金额、负号与电话号码的示例文本,结果区直接列出抽出的 6 个数字,无需先点按钮。
- 在文本框粘贴或输入你的内容;点「提取数字」或按 Ctrl/Cmd+Enter 立即抽取,改动文本也会自动重算。
- 勾选「去重」只保留首次出现的数字;勾选「升序」按从小到大排列,两个选项可同时生效。
- 普通整数、小数(如 456.78)、负号(如 -9)都会被抽到;千分位逗号会被清理,1,234 变成 1234。
- 点「复制结果」把抽出的数字列复制到剪贴板;下方「复制对照表」复制提取规则,「导出 CSV」保存带字节序标记的表格。
- 本工具不联网、不记录输入,刷新回到默认示例;所有抽取只在你浏览器里完成。
这个提取数字文本工具能解决什么
日志、报表、聊天记录里常散落着订单号、金额、数量,人工挑数字既慢又容易漏。提取数字文本工具用正则把文本里所有数字一次性抓出来,省去肉眼逐行扫描。
第一类用途是报表与日志清洗。把导出的文本粘进来,几秒拿到纯数字列,直接进表格做求和、统计,不必逐行复制粘贴。
第二类用途是核对与对账。订单号、金额混在说明文字里,抽出后和账目比对,快速发现数目对不上的地方,减少人工差错。
第三类用途是数据预处理。做分析前先把数字从非结构化文本里剥离,再去重、排序,作为后续脚本的输入,显著减少手工整理时间。
值得一提的是,连字符连接的电话号码、日期分段会被作为整体保留而非拆成两段,避免了把「010-8888」误拆成两个数字;这类规则让抽取结果更贴近真实语义,且全程本地、不上传任何内容。
原理和变量
核心是一条「两段式正则」:先用 (\d+(?:-\d+)+) 把连字符连接的连续数字段(如 010-8888、2026-01-01)整体捕获,再用 (-?\d+(?:,\d{3})*(?:\.\d+)?) 捕获普通数字——可带负号、千分位逗号与小数点。前者优先匹配,避免电话号码被拆成「010」和「-8888」。变量是原始文本 T 与两个布尔开关:去重 u、升序 s。下表示意各类输入的具体处理。
| 类型 | 规则 | 示例 |
|---|---|---|
| 整数 | 连续数字 | 123 → 123 |
| 小数 | 含小数点 | 456.78 → 456.78 |
| 负数 | 前置负号 | -9 → -9 |
| 千分位 | 去除逗号 | 1,234 → 1234 |
| 连字符号码 | 整体保留 | 010-8888 → 010-8888 |
| 日期分段 | 整体保留 | 2026-01-01 → 2026-01-01 |
为什么用两段式而非一条正则?因为负号与连字符在文本里长得很像,但语义相反:负号表示数值为负,连字符表示「连接」。若只用一条规则,010-8888 会被拆成 010 和 -8888,既破坏了号码也产生了错误负数。先整体捕获连字符段,再处理独立数字,才能把两者区分开,这正是对「技术内核」最关键的取舍,也是本工具区别于普通「找数字」脚本的本质之处。
完整示例
以示例文本「订单号123 金额456.78元 共-9件 电话010-8888」「温度是36.5度 湿度70%」为例,正则依次捕获 123、456.78、-9、010-8888、36.5、70,下面这段就是结果区直出原文,未做任何硬编码替换,可被算法逐字复算。
123 456.78 -9 010-8888 36.5 70
若勾选「去重」且文本里出现重复数字,则只保留第一次出现;勾选「升序」后纯数字按数值从小到大排,含连字符的令牌按字符串排,顺序可控、结果可复算。
这里有一个易错点:连字符令牌(如 010-8888)在升序时按字符串而不是数值排序,因为它含非数字字符,强行当数字会丢失号码结构。本工具选择保留其原貌,让你在后续处理时仍能认出这是电话号码而非普通数值,也避免把客户号码排得乱七八糟。
数字提取规则对照表
下表共 14 行,列出各类输入的处理规则与示例。前 12 行默认显示,点工具区的「加载更多」看余下 2 行。规则与本工具正则一致,便于你预判抽取结果。
如果你的文本里混入大量字母与符号,不用担心,它们都会被忽略,只有数字相关片段进入结果;这也意味着「编号 A-1」「版本 2.0」里的 1、2.0 仍会被抽出,但 A-1 整体保留,不会拆成 A 和负数,兼顾了灵活性与正确性。
| 类型 | 规则 | 示例输入 → 提取 |
|---|---|---|
| 整数 | 连续数字 | 123 → 123 |
| 小数 | 含小数点 | 456.78 → 456.78 |
| 负数 | 前置负号 | -9 → -9 |
| 千分位 | 去除逗号 | 1,234 → 1234 |
| 连字符号码 | 整体保留 | 010-8888 → 010-8888 |
| 日期分段 | 整体保留 | 2026-01-01 → 2026-01-01 |
| 金额符号 | 仅取数字 | ¥99 → 99 |
| 百分比 | 数字部分 | 70% → 70 |
| 版本号 | 整体保留 | 1-2-3 → 1-2-3 |
| 编号区间 | 整体保留 | 5-10 → 5-10 |
| 去重 | 相同只留一 | 1 1 → 1 |
| 升序 | 从小到大 | 3 1 2 → 1 2 3 |
| 空白分隔 | 不影响 | 空格换行均可 |
| 字母符号 | 被忽略 | 仅保留数字 |
横向读这张表能看出:凡是「数字-数字」的连续段都优先整体保留,只有真正独立的数字才被单独抽取,所以电话、日期、版本号都不会被负号或减号规则破坏。
把这条规则记牢,你就能放心地把整段日志、整封邮件粘进来,而不必先手工清理格式;抽取结果既保留了结构化号码,又剥离了冗余文字,刚好可以作为下一步统计或比对的干净输入,省下大量预处理时间。
当你处理大段非结构化文本时,先把数字抽出来往往只是第一步;抽完之后,建议立刻用「去重」清理重复计数,再用「升序」排出大小,这样就能直接看出最大值、最小值与整体分布,而不必肉眼把整列扫一遍。把抽取与整理放在同一页完成,正是为了减少在多个工具之间来回切换的损耗,也让结果更连贯、更易追溯。
结果边界与错误提示
- 文本完全为空时,提示「文本不能为空:请粘贴或输入包含数字的内容」,不会输出空行或假结果。
- 文本里没有任何数字时,提示「未提取到任何数字」,不会报错崩溃或给无意义结果。
- 千分位写成非标准逗号(如 12,34)时按普通数字分段处理,不会强行当千分位,结果以实际捕获为准。
- 连字符号码中的短横被保留,不会把「010-8888」拆成 010 与 -8888,避免号码失真、比对出错。
- 结果区与错误区都带 role="alert",内容变化会被屏幕阅读器播报;所有抽取本地完成,不联网不写存储。
- 对照表 CSV 导出带字节序标记,Excel 双击不乱码;「复制对照表」是制表符分隔文本,粘进表格软件会自动分列。
- 复制失败时提示「复制失败,请手动选择文本复制」,不会静默无反应让你误以为已复制。
- 本工具只做文本层数字抽取,不解析单位含义(如「万元」「kg」),如需换算请配合单位工具另行处理。
常见问题
电话号码为什么没被拆开?
因为正则优先把「数字-数字」的连续段整体捕获,010-8888 作为一个令牌保留,不会被负号规则拆成 010 与 -8888 两段。
千分位逗号会保留吗?
不会,1,234 会被清理成 1234;若你的逗号不是三位一分(如 12,34),则按实际分段捕获,不会被误判。
日期 2026-01-01 会拆吗?
不会,连字符连接的日期分段整体保留为 2026-01-01,符合「整体保留」规则,不会被拆成多个数字。
负数怎么识别?
数字前紧跟负号即识别为负数,如 -9;若负号前是数字(如 8-9)则按区间整体保留,不视为负数。
去重和升序能一起用吗?
能,先去重保留首次出现,再按升序排列,两个开关互不冲突、依次生效。
科学计数法 1e3 能提取吗?
当前不单独支持指数写法,会按普通数字与字母分别对待;如常用可后续增加该规则。
复制的内容是什么?
复制抽出的数字列,每行一个,可直接粘贴进表格或脚本继续处理,无需再整理格式。
数据会上传吗?
不会。文本与结果只在浏览器里处理,刷新即清空,不写服务器也不留本地存储,适合处理敏感文本。
相关工具
- 删除数字文本:与本站反向,把数字从文本里剔掉,配合做双向清洗。
- 从文本提取URL:抽取网页链接,和抽数字搭配整理原始文本。
- 批量提取邮箱地址工具:从通讯录或名单里抓邮箱,适合客户整理。
- 提取话题标签工具:抽取 #标签,做社媒内容归类。
- 字数统计工具:统计文本规模,和抽取结果一起做内容分析。