【问题标题】:Finding invalid emails with spaces using Regex使用正则表达式查找带空格的无效电子邮件
【发布时间】:2018-03-19 09:59:22
【问题描述】:

我已将多个文件扫描为 pdf,现在我想使用正则表达式从这些文件中提取电子邮件。但是 PDF 有时在单词之间有空格,因为它的图像到文本的解释并不完美。由于我不再有纸质文件,因此无法重做扫描。

例如,这些是可能性:

example.email@gmail.com
example.email@g mail.com
example.email@ gmail.com
example.email @ gmail.com
example.email @ gmail .com
example.email @gmail .com
example.email @gm ail .com
example.email @ gmail . com
exa mple.email@gmail.com
exa mple.email @gmail.com
exa mple.email @ gmail.com
exa mple.email @gmail .com
exa mple.email @ gmail .com
exa mplemail @ gmail .com

我尝试了多种正则表达式,但我对正则表达式的了解太有限,无法找到所有解决方案。

我使用来自http://emailregex.com/ 的通用电子邮件正则表达式并添加了空格。

(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-zA-z0-9 ](?:[a-zA-Z0-9- ]*[a-z0-9])?\.)+[a-zA-z0-9](?:[a-zA-z0-9-]*[a-zA-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-z0-9-]*[a-zA-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

此解决方案仅匹配 4 种可能性。

对于查找更多电子邮件有什么建议吗?也欢迎部分解决方案,因为我可以将它们添加到结果中。

注意:pdf 不只包含电子邮件。所以一行文本可能如下所示:“email:example.email@gmail.com?\”

【问题讨论】:

标签: regex pcre email-validation


【解决方案1】:

试试这个:

/^[\w. -]++@[\w. -]++$/gm

【讨论】:

  • 此解决方案适用于给定的可能性。但遗憾的是它不适用于示例行:“email:example.email@gmail.com?\”
  • 可能会更正:/^[\w.: -]++@[\w. -]++$/gm
猜你喜欢
  • 1970-01-01
  • 2017-10-05
  • 2012-07-04
  • 2017-06-07
  • 1970-01-01
  • 2020-05-31
  • 2017-06-21
  • 2020-04-30
  • 1970-01-01
相关资源
最近更新 更多