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

如何用正则表达式捕获以“Email:”开头行中的邮箱地址?

解决捕获邮箱地址的正则问题

原正则的问题

你写的/Email\:(.*)\1/g存在两个关键错误:

  1. 错误使用反向引用:\1是用来引用之前捕获组的内容,但你在定义捕获组(.*)后立刻引用,此时捕获组还未匹配到任何内容,导致(.*)只能匹配空字符串,最终仅能捕获到Email:。
  2. 未处理冒号后的空格:原文本中Email:后面带有空格,你的正则未考虑这个细节,无法正确定位邮箱的起始位置。

正确的正则方案

方案1:匹配整行邮箱内容(适配你的场景)

由于邮箱在单独一行,直接匹配Email:后面的所有内容即可:

const text = `Details of Contact Made: 
Sender's Name: Test (Individual) 
Mobile: 4354354354 
Email: 7c92e312-93d5-4354354-45435435@email.webhook.site 
Message: I am interested in your property. Please get in touch with me 
Click here 
<https://www.magicbricks.com/bricks/mailerautologin.html?`;

const regex = /Email:\s*(.+)/;
const match = text.match(regex);
const email = match ? match[1] : ''; // 最终得到目标邮箱
  • Email: 匹配固定前缀
  • \s* 匹配冒号后0个或多个空格(兼容可能的空格差异)
  • (.+) 捕获该行剩余的所有内容(即目标邮箱地址)

方案2:精准匹配邮箱格式(更严谨)

如果需要确保捕获的是标准邮箱格式,可以使用专门的邮箱正则:

const regex = /Email:\s*([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/;
const match = text.match(regex);
const email = match ? match[1] : '';

这个正则会严格匹配@、域名后缀等邮箱特征,避免意外捕获其他无关内容。

注意事项

  • 不要添加g全局标志:全局模式下match只会返回所有匹配的完整结果,不会返回捕获组。如果需要全局匹配多个邮箱,改用exec循环获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:15:41