Регулярные выражения JavaScript для получения всех электронных писем из строки - PullRequest
1 голос
/ 07 июня 2011

Учитывая строку, как я могу сопоставить все электронные письма, которые находятся внутри "<>".

Например:

У меня может быть xxx@abc.com и <yyy@abc.com>, и я хочу соответствовать только yyy@abc.com.

Спасибо!

1 Ответ

2 голосов
/ 07 июня 2011

Если быть точным, вы можете реализовать регулярное выражение из RFC822, которое описывает действительные форматы адресов электронной почты , однако вы можете сэкономить время и головную боль, выполнив что-то быстрое и простое, например:

var extractEmailAddress = function(s) {
  var r=/<?(\S+@[^\s>]+)>?/, m=(""+s).match(r);
  return (m) ? m[1] : undefined;
};
extractEmailAddress('xxx@abc.com'); // => "xxx@abc.com"
extractEmailAddress('<yyy@abc.com>'); // => "yyy@abc.com"

Конечно, эта функция будет очень допустимой строк, которые, возможно, даже отдаленно выглядят как адрес электронной почты, поэтому регулярное выражение "r" может быть улучшено, если важно качество.

...