邮箱提取器 — 从任意文本中提取邮箱、链接、电话与 IP
邮箱与联系方式提取工具
电子邮件地址 — 2
| 电子邮件 | 2 |
| URL | 2 |
| 电话号码 | 2 |
| IP 地址 | 1 |
| 社交账号 | 1 |
| 去重后的条目总数 | 8 |
提取过程完全在你的浏览器中运行,因此粘贴的文本不会离开该页面。电子邮件和 URL 中的数字不会计入电话号码列表,重复项也会被合并。模式匹配无法理解上下文:九位数的订单号与电话号码看起来完全一样,所以使用结果前请先核对。
功能介绍
正则表达式是一套用来描述文本形状的小型模式语言。它能表达「若干字符、一个 @、一个带点的域名」,也能表达「四组一到三位的数字,用点分隔」,并且能在几毫秒内扫完一整兆文本。它做不到的是理解含义:正则不知道 4155550132 是电话号码还是订单号,不知道 example.com 是否可达,也不知道当事人是否同意被联系。它只匹配形状,而提取工作中最难的部分,恰恰是形状和含义之间的这段距离。 在邮箱地址上,这段距离最宽。RFC 5322 把地址定义为「本地部分 + @ + 域名」,并允许带引号的本地部分、圆括号里的注释、user@[192.168.0.1] 这类 IP 字面量域名,以及引号字符串里的几乎任意字符。要严格校验一个地址,等于要实现这套语法中相当大的一部分,因此实用工具都做了折中:只匹配一个保守子集,并接受少量合法地址被漏掉的情况。本工具的模式在本地部分前面设置了边界前置断言,并要求域名至少有一级点分隔标签,这样既能覆盖绝大多数真实地址,又会拒绝社交账号 @用户名,或者更新日志里单独出现的 @ 符号。 朴素提取器最典型的毛病是吞掉句末标点。一条写成「若干字符、@、若干字符、点、若干字符」的正则,作用在「请发邮件给 [email protected]。」上,会高高兴兴地返回带句号的 [email protected].。每一个爬虫作者都踩过这个坑,结果是收件箱里塞满以句号、逗号或右括号结尾的地址。解决办法是在末尾加上边界断言,拒绝把匹配延伸到后面的单词字符或点,再对 URL 匹配做一次清理——因为 URL 结尾的右括号可能是合法字符,而句末的句号一定不是。
电话号码更难,其中一步尤其反直觉:必须先把邮箱地址和 URL 里面的数字挖空,再开始找号码。看看 [email protected] 或者 https://example.com/invoice/20240115,它们内部的数字段完全符合任何合理的电话模式。规避办法是在跑电话模式之前,用等长度的空格把这些片段替换掉,这样文本中其他字符的偏移量保持不变,别处的匹配不会受影响。 即便如此,误报依然无法避免。九位订单号、客户 ID、20240115120000 这样的时间戳、A12345678901 这样的商品编码——它们形状上都是电话号码,却没有一个是电话。正则无法通过上下文词语来判断,所以输出只能作为人工复核的起点,而不是最终名单。国际格式又让事情更复杂:带加号的区号、必须保留的前导零、作为分隔符的点、空格、连字符和圆括号,还有分机号。真正可行的折中是数出数字个数,只保留 7 到 15 位的结果——这既覆盖了最短的国内号码,也覆盖了最长的 E.164 号码,同时把零散的两位数和长标识符排除在外。 IPv4 是唯一可以真正严格校验的类别,因为它的形状是固定的:四段十进制八位组,用点分隔,每段在 0 到 255 之间,并且现代规范不允许前导零。模式按八位组逐段匹配,而不是笼统地匹配一串数字,因此 999.1.1.1 和 192.168.01.1 都会被正确拒绝;边界断言也避免了从 1.2.3.4.5 这样的版本号或 IPv6 地址里切出片段。社交账号本身更简单,但需要在前面加上对 @ 和 # 的否定回顾断言,否则一个邮箱地址会因为它的本地部分而凭空多出一条账号。
由于这一切都不应该在「必须把文本发给别人」的服务器上完成,本工具的全部逻辑都是页面里的原生 JavaScript:没有上传,没有队列,不需要账号。这样做的唯一代价,是处理量受限于浏览器页面能舒适承载的文本大小。
使用方法
- 把文本粘贴或输入到卡片顶部的大文本框。卡片预置了一段包含邮箱、链接、电话号码、IP 地址和社交账号的示例文字,可以先看看效果再换成自己的内容。
- 看文本框下方的五个分类按钮:Emails、URLs、Phone numbers、IP addresses、Social handles。每个按钮括号里都有实时计数,随输入即时更新,顺便也能当作文本是否粘贴完整的快速检查。
- 打开 Emails 标签查看所有找到的邮箱地址。重复项会被合并,同一个值出现十次也只列一行,标签页下方的标题会再次给出该分类的总数。
- 依次切换到 URLs、Phone numbers、IP addresses 或 Social handles。每个标签要么显示去重后的列表,要么显示「未找到该类型内容」的提示,这能快速区分「没这类信息」和「文本格式不对」。
- 查看卡片底部的汇总表。它按行列出五个分类的数量,最后一行是加粗的 Total unique items 总计,汇报结果时引用这个数字即可。
- 在列表中选中某个值直接复制,或把文本回粘到表格某一列继续处理。因为内容不离开页面,你可以放心处理含有真实联系数据的文本。
计算示例
输入: Reach the team at [email protected] or ping [email protected] for pricing.
过程:
匹配邮箱模式,要求域名含点,合并重复值,再用边界断言拒绝句末的句号结果: 邮箱 (2):[email protected]、[email protected]
输入: Docs: https://wrightkit.com/guides and http://example.org/docs?page=2 — office line +1 (415) 555-0132.
过程:
网址匹配在破折号前停止,句末句号被清理,随后先把链接中的数字挖空再跑电话模式结果: 网址 (2):https://wrightkit.com/guides、http://example.org/docs?page=2 | 电话 (1):+1 (415) 555-0132
输入: Server 192.168.1.10 handles uploads. Order 4155550132 shipped. Follow @wrightkit.
过程:
IPv4 逐段校验,9 位订单号落在 7 到 15 位区间被保留,社交账号靠 @ 的否定回顾断言识别结果: IP (1):192.168.1.10 | 电话 (1):4155550132(需人工确认,可能是订单号)| 社交账号 (1):@wrightkit
输入: 300 字的回复里 [email protected] 出现两次,IP 10.0.0.256 不合法。
过程:
完全相同的匹配合并为一行,越界的 IPv4 八位组未通过校验,因此不列出结果: 邮箱 (1):[email protected] | IP (0):10.0.0.256 被拒绝——某段大于 255
相关搜索
相关搜索:邮箱提取器, 从文本提取邮箱, 批量提取邮箱地址, 在线查找邮箱, 电话号码提取器, 从文本提取网址。
邮箱提取器从文本提取邮箱批量提取邮箱地址在线查找邮箱电话号码提取器从文本提取网址IP地址提取查找文本中的IP社交账号提取查找社交账号正则提取联系方式联系方式批量提取文本数据清洗网页抓取后处理免费在线文本工具批量查找工具文本解析器客户信息整理
常见问题
这个工具能找到文本里的每一个邮箱地址吗?
任何提取器都无法保证,原因是地址语法本身,而不是工具有 bug。RFC 5322 允许带引号的本地部分、用方括号括住的 IP 域名和注释语法,一条试图匹配全部情况的正则也会同时匹配一堆胡话。本工具匹配的是现实中占绝大多数的保守子集,能够稳定抓出普通邮箱,同时有意漏掉那些罕见写法。如果数据在你手里,直接从源系统导出,比解析文本可靠得多。
为什么邮箱和网址里的数字没有出现在电话号码列表里?
因为在运行电话模式之前,这些片段已经被等长度的空格挖空了,它们的数字根本到不了匹配器,而其他字符的位置保持原样。没有这一步,[email protected] 或者以 20240115 结尾的发票链接都会产生凭空捏造的电话号码结果——任何长度落在合理区间的数字串在正则看来都一模一样。同样的屏蔽逻辑也把版本号和参考编号挡在电话列表之外。
为什么我的九位订单号被列成了电话号码?
因为模式匹配看的是形状,不是含义。九位订单号和九位手机号对正则来说是同一个字符串,要区分它们需要理解周围的词语,而正则做不到。提取器保留 7 到 15 位数字,是为了在国内号码和国际号码之间都能用,这必然也覆盖了大部分订单号。请结合上下文检查电话列表再使用,或者把文本拆开,让标识编号和联系信息分处不同段落。
电话标签能识别哪些号码格式?
它覆盖真实文本中最常见的几种形状:可选的带加号国家码、可选的圆括号区号,以及用空格、点或连字符分组的数字。匹配后再按数字个数过滤,保留 7 到 15 位,这样短的本国号码和长的国际号码都能留下,零散的小数字则被丢弃。使用不常见分隔符、或把国家名写出来的格式不会被匹配;号码在分组中间换行的情况同样匹配不到。
它能处理 IPv4 地址并避免误匹配 IPv6 吗?
IPv4 的匹配是严格的,因为它格式固定:四段 0 到 255 的十进制八位组用点分隔。任何大于 255 的数,或者段数不对的写法都会被拒绝,999.1.1.1 会被忽略。边界断言还会阻止模式从更长的点分字符串里咬下一块,比如版本号,这正是虚假 IP 结果的常见来源。IPv6 地址完全不匹配,只在它作为链接的一部分时出现在 URL 标签里。
我粘贴的文本会被上传到服务器吗?
不会。模式是以 JavaScript 在你的浏览器标签页里运行的,文本只是从文本框被读取,既不会发送、不会被记录、也不会被存储。这一点对恰好是本工具主要用途的输入尤其重要,因为粘贴进来的文本经常是客服对话或客户档案,里面全是个人数据。客户端运行唯一的实际限制,是超大输入受限于浏览器页面能承载的量,而不是网络往返。
可以顺便提取社交媒体账号吗?
可以。Social handles 标签会收集以 @ 开头、后面跟一个字母以及最多三十个字母数字或下划线的取值,基本覆盖主流社交平台的命名规则。否定回顾断言会阻止邮箱地址开头那个 @ 凭空生成一条本地部分账号,重复项的合并方式也与其他分类完全一致。请记住账号本身只是账号:它不会告诉你这个账户属于哪个平台,而且任何人都可以注册同名。