如何在Nokogiri的HTML代码中找到电子邮件地址?

Fre*_*uth 3 ruby regex ruby-on-rails nokogiri

如何在Nokogiri的HTML代码中找到电子邮件地址?我想我需要使用正则表达式,但不知道如何.

示例代码

    <html>
    <title>Example</title>
    <body>
    This is an example text.
    example@example.com
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

当有一个关于mail_to的href时,有一个答案覆盖案例,但这不是我的情况.电子邮件地址有时位于链接中,但并非总是如此.

谢谢

dee*_*our 6

如果你只是试图从一个恰好是HTML的字符串中解析电子邮件地址,那么就不需要Nokogiri.

html_string   = "Your HTML here..."
email_address = html_string.match(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)[0]
Run Code Online (Sandbox Code Playgroud)

这不是一个完美的解决方案,因为构成"有效"电子邮件地址的RFC 非常宽松.这意味着您遇到的大多数正则表达式(包括上面的表达式)都不考虑边缘情况有效地址.例如,根据RFC

$A12345@example.com
Run Code Online (Sandbox Code Playgroud)

是一个有效的电子邮件地址,但不会与上面的正则表达式匹配.