【问题标题】: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 问题....已触发!

标签: javascript jquery regex string parsing


【解决方案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);
    }
    

    【讨论】:

    猜你喜欢
    • 2016-12-12
    • 2016-02-21
    • 2019-04-05
    • 2014-07-25
    • 2011-08-22
    • 2016-04-06
    • 2014-12-09
    • 2018-02-16
    • 2016-04-22
    相关资源
    最近更新 更多