使用javascript查找字符串中的电子邮件地址

时间:2013-02-28 16:44:07

标签: javascript regex

我要做的是从字符串SomeName, First (First.SomeName@usa.mywebsite1.com)

中提取电子邮件地址

以下是我已尝试过的代码:

 var stringToSearchIn="SomeName, First (First.SomeName@usa.mywebsite1.com)";


 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,}))$/;

var extractedEmail=re.exec(stringToSearchIn);

代码中的变量extractedEmail返回null。

4 个答案:

答案 0 :(得分:3)

  

我试过这个并且失败了

...对发生的事情并不是非常有用的描述。猜测,重新找不到匹配。一个明显的原因是你在这里使用的正则表达式只匹配 ONLY 包含一个电子邮件地址的字符串 - 从正则表达式中删除结束锚点(^,$),你会得到你的电子邮件地址。

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,}))/;

答案 1 :(得分:2)

这里不需要正则表达式。如果字符串的格式始终为

Name (email)

您只需使用(作为分隔符:

var stringToSearchIn="SomeName, First (First.SomeName@usa.mywebsite1.com)";

var extractedEmail = stringToSearchIn.substr(stringToSearchIn.indexOf('(') + 1).slice(0, -1);

答案 2 :(得分:1)

这个适合我。

var searchInThisString ="SomeName, First (First.SomeName@usa.mywebsite1.com) SomeName2, First2 (First2.SomeName2@usa.mywebsite1.com)";

var foundEmails =[];

var emailRegex = /(([^<>()[\]\\.,;:\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,}))/;

var gotcha;

while (match = emailRegex.exec(searchInThisString)){

     //-- store in array the found match email
     foundEmails.push(match[0]);

    //-- remove the found email and continue search if there are still emails
    searchInThisString= searchInThisString.replace(match[0],"")
}

alert(foundEmails.join(“”))

答案 3 :(得分:-1)

试试这个正则表达式

@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"

这将接受以下任何一项:

  • email@email.com
  • email@email.email.com
  • email@email.email.email.com

依旧......