пробел в нескольких адресах электронной почты после "," - PullRequest
0 голосов
/ 22 ноября 2011

Я использую RegularExpressionValidator для проверки нескольких адресов электронной почты, разделенных запятой ", "

Мое нижеприведенное выражение отлично подходит для этого требования:

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

Требуется, чтобы это выражение могло обрабатывать пробел после запятой в адресах электронной почты.

Например, мой текущий рабочий файл выражения для email1 @ domain.com, email2 @ domain.com но то, что он не делает, это email1@domain.com, email2@domain.com

Я понимаю, что может быть много решений, но в моем snario лучше всего улучшить это выражение.

Пожалуйста, ведите меня

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011

Вы можете использовать существующее регулярное выражение и вместо этого разделить строку на каждую запятую и обрезать завершающий / начальный пробел:

var emails = input.Split(',');
foreach (var email in emails.Select(ee => ee.Trim()))
{
    if (!emailValidator.IsMatch(email))
    {
        // announce a bad email
    }
}
1 голос
/ 22 ноября 2011

Кроме того, что сказал Фишермаен, есть еще один вариант: разделить электронные письма на отдельные электронные, а затем проверить каждое электронное письмо отдельно.

   var emails = emailString.split(',');
   for(var i = 0; i < emails.length; i++){
      var email = emails[i].trim().replace(',', '');
      // Now you can validate a single, comma-less, space-less email;
   }
1 голос
/ 22 ноября 2011

Вот мое предложение:

((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([, ])*)*

Это будет принимать пробелы между адресами электронной почты

...