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

Функция проверки валидности 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)

10 Comments

  1. zk96

    Хороший пример использования регулярных выражений.

    Reply
  2. TrinitronOTV

    спасибо

    Reply
  3. kittystark

    может чё не так осмыслил, но вроде по этому регэкспу проверку не пройдут

    i.o.fam@domain.com

    mail@other_domain.com

    Reply
  4. kittystark

    хотя нет, i.o.fam@domain.com должен прокатить

    Reply
  5. zaursoft

    (4) kittystark,

    i.o.fam@domain.com — контроль проходит

    mail@other_domain.com — контроль не проходит. Поправлю.

    mail@other.domain.com — контроль проходит.

    Reply
  6. zk96

    Кстати, вот на этот адрес тоже проверку не пройдет : 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}»;

    Reply
  7. zk96

    Или даже вот так

    ШаблонEmail = «#k8SjZc9Dxk[-a-z0-9!#$%&’*+/=?#k8SjZc9Dxk_`{|}~]+(?:.[-a-z0-9!#$%&’*+/=?#k8SjZc9Dxk_`{|}~]+)*@(?:[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])$»;

    🙂

    Reply
  8. pumbaE

    шаблонов в нете для проверки e-mail полно, в чем новизна?

    Regexp откройте для себя. Там можно найти множество примеров.

    Reply
  9. alexm73

    М-да… как-то не понял, если честно…

    а ЗАЧЕМ?… Именно, как пример внешней компоненты? Так с таким же успехом, можно использовать специальную dll-ку, по проверке… не понял, сорри…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *