检查字符串是不是包含电子邮件地址?

Posted

技术标签:

【中文标题】检查字符串是不是包含电子邮件地址?【英文标题】:Check if a string contains an email address?检查字符串是否包含电子邮件地址? 【发布时间】:2013-05-01 17:42:49 【问题描述】:

如何检查给定字符串是否包含电子邮件地址。

电子邮件地址也将包含在许多其他文本中。

另外,不一定要严格验证电子邮件地址本身。更何况只是想确保a@b.xyz 存在。

示例字符串:

Overall I liked the service, but had trouble using the widget generator.

Want more info? You can contact me at bob@example.org.

javascript 很好,但我碰巧使用的是 jQuery,所以如果有某种帮助函数可以让这更容易......去吧。

【问题讨论】:

@WesleyMurch 说了什么。我在这里寻找javascript。不是 php @WesleyMurch 啊,牛,我的错 :( 但正则表达式也适用于 JavaScript。 FWIW,这篇文章已经在 Google 中以“javascript check if a string contains an email address”排名第一。一个好的答案会有所帮助,而不是因为它与另一个问题有关而忽略这个问题。 您也可以查看this answer 除了正则表达式,这是一个带有突出 php 参考的 Javascript 问题....已触发! 【参考方案1】:

你可以用这个:

var StrObj = "whatever, this is my email dave@gmail.com other text";
var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
if (emailsArray != null && emailsArray.length) 
    //has email

如果需要,这也可以让您从数组中获取电子邮件地址。

【讨论】:

这至少对西里尔电子邮件地址不起作用,也许对其他一些电子邮件地址也不起作用。例如来自该域的电子邮件 - админ.com【参考方案2】:

试试

/\b[a-z0-9-_.]+@[a-z0-9-_.]+(\.[a-z0-9]+)+/i.test(text)

【讨论】:

【参考方案3】:

Debuggex Example

JsFiddle Example

function checkIfEmailInString(text)  
    var re = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))/;
    return re.test(text);

【讨论】:

在这方面它与新行不匹配,有什么想法可以修改吗? regex101.com/r/rN6eD6/1

以上是关于检查字符串是不是包含电子邮件地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中检查电子邮件是不是存在?

如何检查字符串是不是是android中的有效电子邮件? [复制]

检查电子邮件地址是不是存在

如何检查邮件地址是不是存在?

检查电子邮件地址是不是存在[重复]

如何检查MySQL中是不是存在一行? (即检查电子邮件是不是存在于 MySQL 中)