6

我想做的是从字符串中提取电子邮件地址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);

代码中的变量extractEmail 返回一个空值。

4

4 回答 4

6

我试过这个但失败了

...对于所发生的事情不是一个非常有用的描述。在猜测中,重新找不到匹配项。造成这种情况的一个明显原因是您在此处使用的正则表达式将仅匹配包含电子邮件地址的字符串 - 从正则表达式中删除结束锚 (^,$),您将获得您的电子邮件地址。

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,}))/;
于 2013-02-28T16:50:09.443 回答
2

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

姓名(电子邮件)

您可以简单地(用作分隔符:

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

var extractedEmail = stringToSearchIn.substr(stringToSearchIn.indexOf('(') + 1).slice(0, -1);
于 2013-02-28T17:07:46.353 回答
0

这个对我有用。

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(" "))

于 2013-08-27T02:37:49.773 回答
-1

试试这个正则表达式

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

这将接受以下任何一项:

  • 电子邮件@email.com
  • 电子邮件@email.email.com
  • 电子邮件@email.email.email.com

等等...

于 2013-02-28T16:49:03.373 回答