Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 950
Нужно заставить юзеров корректно вводить e-mail адрес в поле редактора TMaskEdit.

Маску делать не получается, потому что стоит условие, что это поле не должно быть пустым и договорились, что если e-mail не известен, то ставим дефис '-'.

Тут видится использовать событие OnValidate, чтобы более сложную обработку делать на ввод адреса:

проверять чтобы несколько адресов не вводили
проверять чтобы не было пробелов
чтобы был хотя бы 1 символ перед '@'
чтобы была хотя бы 1 точка после '@'
причём чтобы символ перед '@' не был только точкой или '?' или ещё какой нибудь фигнёй
чтобы после последней точки было как минимум 2 и максимум 3 символа и опять же не любого
и т.п. и т.д.

Может быть у кого-нибудь уже есть готовый обработчик этого дела?
Был бы очень благодарен и вообще это полезная вещь для всех.
6 июл 18, 12:32    [21549087]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
zinpub
Member

Откуда:
Сообщений: 214
verter,

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

Это не ругательство :-)
6 июл 18, 12:54    [21549138]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
zinpub
Это не ругательство :-)
Это хуже :)
6 июл 18, 12:55    [21549140]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
goldmi45
Member

Откуда:
Сообщений: 1006
verter
Нужно заставить юзеров корректно вводить e-mail адрес .....


Подтверждение введённого адреса?
На ваш взгляд адрес dsasdwecfsdfwmkvmwelkfvgeowri@mail.ru корректный?
6 июл 18, 12:56    [21549144]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
verter
чтобы после последней точки было как минимум 2 и максимум 3 символа
У меня адрес рабочей почты yurock@???.corp
6 июл 18, 12:57    [21549149]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3527
verter,

Вставь в OnValidate это:
( S = '-' ) or ( Pos( '@', S ) <> 0 )
и не парься.
6 июл 18, 12:59    [21549158]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
Aniskin
Member

Откуда:
Сообщений: 284
А еще есть IDN emails вида в.в.путин@президент.рф.
6 июл 18, 13:03    [21549176]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10492
Прекратите проверять Email с помощью регулярных выражений!
6 июл 18, 13:28    [21549287]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
zinpub
Member

Откуда:
Сообщений: 214
_Vasilisk_
Прекратите проверять Email с помощью регулярных выражений!


Спорные аргументы, не всегда можно отправить письмо сразу, например это файлик с большим кол-вом адресов для создания...
6 июл 18, 13:37    [21549359]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
alekcvp
Member

Откуда:
Сообщений: 1089
zinpub
_Vasilisk_
Прекратите проверять Email с помощью регулярных выражений!

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

Речь идёт про валидацию при ручном вводе. Ясный перец, что при автоматизированных процессах критерии другие.
6 июл 18, 13:49    [21549436]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
zinpub
Member

Откуда:
Сообщений: 214
А вот ребята проверяют...

К сообщению приложен файл. Размер - 57Kb
6 июл 18, 13:53    [21549455]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
Василий 2
Member

Откуда:
Сообщений: 192
А можно поинтересоваться, с какой целью это делается?
Если для пакетной обработки - то на первую линию обороны достаточно самой простой регулярки, остальные можно песочить уже более медленными, но тщательными способами. А если для анального огораживания ввода от юзера - то никто не помешает ему ввести fuckthissite@admin.asshole или простой aa@bb.cc, как делаю я, когда от меня на кой-то ляд требуют вбить емейл там, где без этого можно обойтись
6 июл 18, 14:30    [21549648]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
Василий 2
Member

Откуда:
Сообщений: 192
Перечитал первый пост, частично ответ дан, но вопрос таки остается - какова цель? Если позарез нужен валидный адрес, то делай подтверждение через отправку на него письма с кодом активации
6 июл 18, 14:32    [21549657]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10492
zinpub
А вот ребята проверяют...
Правильно. Адрес должен удовлетворять вот такому простейшему регекспу
.+?@[^@]+
все остальное - нафиг
6 июл 18, 14:36    [21549671]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
zinpub
Member

Откуда:
Сообщений: 214
_Vasilisk_
zinpub
А вот ребята проверяют...
Правильно. Адрес должен удовлетворять вот такому простейшему регекспу
.+?@[^@]+
все остальное - нафиг


Ну естественно про RFCшный - я пошутил, хотя...
6 июл 18, 14:37    [21549678]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
schi
Member

Откуда: Москва
Сообщений: 2578
Почтовые адреса очень удобно проверять почтовым сервером, отправляя письмо. Все остальные проверки не дают гарантированного результата.
6 июл 18, 16:07    [21550104]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
Gator
Member

Откуда: Москва
Сообщений: 13866
schi
Почтовые адреса очень удобно проверять почтовым сервером, отправляя письмо. Все остальные проверки не дают гарантированного результата.

Ну ты загнул.!!
А если связи с серваком нету - пьяный тракторист плугом кабель распахал и ли летуны бандероли потеряли потопили?

Или сервак дает отворот абоненту за просрачку платежа,
________________
РЕЗЮМЕ: Надо от своей проверки отлынить и отдать её клиенту - а ля мы тебе доверяем(!)
6 июл 18, 23:57    [21551106]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
errorsoft
Member

Откуда: Санкт-Петербург
Сообщений: 162
https://github.com/errorcalc/FreeEsVclComponents/blob/master/README.md
7 июл 18, 04:37    [21551291]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
Властюга
Guest
errorsoft,

Ну по крайне мере враньё, про "не мерцания" они мерцают ещё как, если в правильных руках
7 июл 18, 09:14    [21551397]     Ответить | Цитировать Сообщить модератору
 Re: Проверка на корректность ввода e-mail адреса в TMaskEdit  [new]
schi
Member

Откуда: Москва
Сообщений: 2578
Gator
Ну ты загнул.!!


Я такой, да

На самом деле людей интересует не корректный с точки зрения RFC адрес, а верный адрес - это две больше разницы. От того, что ты перепутал две буквы в имени ящика, адрес не перестал был корректным, но, увы, стал неверным.
7 июл 18, 10:02    [21551475]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить