gifts2017

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7)

Опубликовал Заур Тарчоков (zaursoft) в раздел Программирование - Практика программирования

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7). Данную функцию можно вставить в Глобальный модуль и пользоваться, например, при вводе или сохранении e-mail.

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7). Данную функцию можно вставить в Глобальный модуль и пользоваться, например, при вводе или сохранении e-mail.

Исходный код функции:

//***********************************************************************
// глПроверкаEmail()
//
// Функция проверки валидности e-mail с использованием регулярных выражений RegExp.
//
// Параметры:
//      _Email - Строка с проверяемым e-mail;
//
// Возвращаемые значения:
//      0 - Некорректный e-mail;
//      1 - Корректный e-mail.
//
Функция глПроверкаEmail(_Email) Экспорт

    Если Найти(
_Email, " ") > 0 Тогда // Не должно быть пробелов.
       
Возврат 0;
    КонецЕсли;

   
Истина = -1;
   
Ложь   = 0;

   
ШаблонEmail = "([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}"; // регулярное выражение соответствует произвольному e-mail адресу

   
Попытка
       
RegExp = СоздатьОбъект("VBScript.RegExp"); // создаем объект для работы с регулярными выражениями.
   
Исключение
        Сообщить(
"Не удалось инициализировать VBScript.RegExp! Невозможно выполнить проверку e-mail!", "!");
        Возврат
1;
    КонецПопытки;
   
RegExp.MultiLine  = Ложь;        // истина — текст многострочный, ложь — одна строка.
   
RegExp.Global     = Истина;      // истина — поиск по всей строке, ложь — до первого совпадения.
   
RegExp.IgnoreCase = Истина;      // истина — игнорировать регистр строки при поиске.
   
RegExp.Pattern    = ШаблонEmail; // шаблон (регулярное выражение) для проверки корректности e-mail.

   
Если RegExp.Test(_Email) = Истина Тогда
        Возврат
1;
    Иначе
        Возврат
0;
    КонецЕсли;

КонецФункции
//глПроверкаEmail(_Email)

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Ваня (zk96) 30.10.11 19:46
Хороший пример использования регулярных выражений.
3. Александр Лыткин (TrinitronOTV) 31.10.11 08:39
4. kittystark kittystark (kittystark) 03.11.11 11:01
может чё не так осмыслил, но вроде по этому регэкспу проверку не пройдут
i.o.fam@domain.com
mail@other_domain.com
5. kittystark kittystark (kittystark) 03.11.11 12:56
хотя нет, i.o.fam@domain.com должен прокатить
6. Заур Тарчоков (zaursoft) 03.11.11 13:03
(4) kittystark,
i.o.fam@domain.com - контроль проходит
mail@other_domain.com - контроль не проходит. Поправлю.
mail@other.domain.com - контроль проходит.
7. Ваня (zk96) 07.11.11 15:21
Кстати, вот на этот адрес тоже проверку не пройдет : mail@i.ua
Может вот так нужно?
ШаблонEmail = "([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9_\-]{1,}\.)+[a-z]{2,4}";
Даже лучше вот так:
ШаблонEmail = "[A-Za-z0-9]{1}[-_.A-Za-z0-9]*@[A-Za-z0-9]{1}[-._a-z0-9]*[a-z]{2,4}";
8. Ваня (zk96) 07.11.11 18:44
Или даже вот так
ШаблонEmail = "^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?\.)*(?:aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])$";
:-)
9. Евгений Сосна (pumbaE) 09.11.11 17:06
шаблонов в нете для проверки e-mail полно, в чем новизна?
Regexp откройте для себя. Там можно найти множество примеров.
10. AlexM (alexm73) 16.11.11 19:34
М-да... как-то не понял, если честно...
а ЗАЧЕМ?... Именно, как пример внешней компоненты? Так с таким же успехом, можно использовать специальную dll-ку, по проверке... не понял, сорри...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа