Javascript 正则表达式提取电子邮件地址

Javascript 正则表达式提取电子邮件地址,javascript,Javascript,我希望能够提取嵌入标签中的电子邮件地址,例如test@demo.com其中src为emailtest@demo.com/电子邮件 我使用的表达式如下:(?Webdev101:不要用正则表达式解析HTML,而是使用DOM操作 下面将记录所有电子邮件,无论它们是在普通电子邮件标签内还是电子邮件标签内或任何标签嵌套内 console.log( from(document.getElementsByTagName('email')) .map(elt=>elt.textContent) .map(em

我希望能够提取嵌入标签中的电子邮件地址,例如
test@demo.com
其中src为
emailtest@demo.com/电子邮件


我使用的表达式如下:
(?Webdev101:不要用正则表达式解析HTML,而是使用DOM操作

下面将记录所有电子邮件,无论它们是在普通
电子邮件
标签内还是
电子邮件
标签内或任何标签嵌套内

console.log(
from(document.getElementsByTagName('email'))
.map(elt=>elt.textContent)
.map(email=>email.trim())
)
john@doe.com

“o'brian”@irish.com
您可以解析Dom的每一行,并将电子邮件正则表达式与标记内容匹配,如下面的代码片段所示:

<script>
function getEmailsFromText (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}
var items = document.getElementsByTagName("*");
    for (var i = 0; i < items.length; i++) {
        var text = items.item(i).textContent;
        var emailIds = getEmailsFromText(text);
        if(emailIds){
        console.log("Emails ID's : "+emailIds);
        }
    }
</script>

函数getEmailsFromText(文本)
{
返回文本.match(/([a-zA-Z0-9.\u-]+@[a-zA-Z0-9.\u-]+\.[a-zA-Z0-9.\u-]+)/gi);
}
var items=document.getElementsByTagName(“*”);
对于(变量i=0;i

要进行测试,请打开javascript控制台选项卡,将上面的代码粘贴到脚本标记中,您可以看到当前html页面的所有电子邮件id。

如果它在标记中,为什么不将其解析为DOM内容,然后只获取该标记的内容?正则表达式似乎不适合这里。可能重复Do as@vlaz say并将其解析为DOM(如果愿意,可以使用纯javascript或jQuery),然后你可以查看我之前发布的答案。做
elt.textContent
更简单,你不必担心它是否包装在另一个标签中以及有多少标签。因为目前这对,比如说
email@email.com
我不知道这件事!如果你愿意,你可以编辑我的答案。我有我也这样做了。我还扩展了示例电子邮件的列表,以更好地展示它。我加入了一封不常见的电子邮件,以演示它如何非常容易地处理它们,而不是使用正则表达式解析电子邮件(这个问题的另一个答案在这一点上失败)。此正则表达式无法识别合法电子邮件,如
my+email@gmail.com
这只是一个温和的例子,但是,对于
电子邮件@ааааааааа
(非拉丁字符)也会失败或
email@companydomain
-没有TLD部分的电子邮件。名字中有撇号的人,如
O'Brien
,也不会被识别。除了禁止合法的电子邮件外,它允许无效的电子邮件,如以点开头的电子邮件。感谢@vlaz分享这一点。我没有想到这样有效的电子邮件id是howev呃,如果你能分享一封支持所有类型的regex电子邮件,那就太好了,甚至我也可以更新我的答案。