我要做的是从字符串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。
答案 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+)*$"
这将接受以下任何一项:
依旧......