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