1С. Проверка email-адреса на валидность

Задача

При разработке системы оповещения о задачах и событиях по e-mail понадобилась проверка email-адреса, собственно разрабатываем.

Решение

Для решения задачи можно использовать регулярные выражения, для этого часто используют COM-объекты, но мы пишем кросс-платформенный вариант и нам это не подойдет.

В адресе должна быть @ и точка после нее, иначе адрес не верен. Если эти условия соблюдаются, то идем дальше и проверяем все символы на допустимость. Если снова все ОК, то адрес валидный.

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

Функция АдресЭлектроннойПочтыВалиден(АдресЭП)
	
	// Проверим наличие в адресе @
	ПозицияСобаки = Найти(АдресЭП, "@");
	
	Если Не ПозицияСобаки = 0 Тогда
		// и наличие точки после собаки
		Если Найти(Сред(АдресЭП, ПозицияСобаки + 1), ".") = 0 Тогда
			Возврат Ложь;
		КонецЕсли;
	Иначе
		Возврат Ложь;
	КонецЕсли;
	
	// Проверим адрес на допустимые символы
	ДопустимыеСимволы = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЪЭЮЯ
	|ABCDEFGHIJKLMNOPQRSTUVWXYZ
	|0123456789
	|._-@";
	
	Позиция = 1;
	
	Пока Позиция <= СтрДлина(АдресЭП) Цикл
		
		ТекущийСимвол = ВРег(Сред(АдресЭП, Позиция, 1));
		
		Если Найти(ДопустимыеСимволы, ТекущийСимвол) = 0 Тогда
			Возврат Ложь;
		КонецЕсли;
		
		Позиция = Позиция + 1;
		
	КонецЦикла;
	
	Возврат Истина;
	
КонецФункции
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: