【问题标题】:Email Regex is extracting some dummy data电子邮件正则表达式正在提取一些虚拟数据
【发布时间】:2019-06-12 04:18:36
【问题描述】:

我正在尝试从 HTML 正文中提取电子邮件。我在互联网上尝试了很多解决方案来提取电子邮件,但它也提取了一些虚拟数据。 即

[ 'bootstrap-material-design@4.1.1',
'popper.js@1.12.6',
'bootstrap-material-design@4.1.1' ],     
['core-js@2.6.9'],
[ 'michael@2x.jpg',
'michael@2x.jpg',
'chuma@2x.jpg',
'chuma@2x.jpg',
'nathan@2x.jpg',
'nathan@2x.jpg',
'kyle@2x.jpg',
'kyle@2x.jpg']

我用来提取电子邮件的正则表达式在这里:

第一个

   /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/

第二个

  /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi

我使用 match 函数提取电子邮件

 const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/

var result = body.match(emailRegex)

有人可以帮助为所需的电子邮件制作更好的正则表达式吗?

【问题讨论】:

  • 为什么要从 HTML 正文中提取电子邮件地址?假设您拥有相关网站,那么肯定有比正则表达式更好的方法来实现您所追求的目标。
  • 其他方式??比正则表达式更好?
  • @Emma 我尝试了此链接中的所有解决方案,但没有一个 fork 适合我。
  • 看看TLDs

标签: javascript regex email


【解决方案1】:

您正在尝试做的事情过于复杂。您可以将问题分解成更小的块,以便更容易解决。

首先解析 HTML 并找到包含诸如 <p> 元素之类的文本的节点,然后在这些内容上运行您的正则表达式。这样你会过得更轻松。

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2018-12-04
    • 2011-12-28
    • 2012-01-02
    相关资源
    最近更新 更多