Ну вот же написали вам регулярку. Наверно она покрывает 95% возможных email адресов и возможных ошибок. Не думаю, что можно (или можно не безумно сложным способом) написать регулярку на 100% покрывающую все допустимые email и отлавливающие все ошибки
|
Эти валидации емейла, можете из готовых либ поискать
Вот, например в yii, так делают (часть кода) email: function (value, messages, options) { if (options.skipOnEmpty && pub.isEmpty(value)) { return; } var valid = true, regexp = /^((?:"?([^"]*)"?\s)?)(?:\s+)?(?:(<?)((.+)@([^>]+))(>?))$/, matches = regexp.exec(value); if (matches === null) { valid = false; } else { var localPart = matches[5], domain = matches[6]; if (options.enableIDN) { localPart = punycode.toASCII(localPart); domain = punycode.toASCII(domain); value = matches[1] + matches[3] + localPart + '@' + domain + matches[7]; } if (localPart.length > 64) { valid = false; } else if ((localPart + '@' + domain).length > 254) { valid = false; } else { valid = options.pattern.test(value) || (options.allowName && options.fullPattern.test(value)); } } if (!valid) { pub.addMessage(messages, options.message, value); } }, |
Вы сами то тестировали эту регулярку?
Все верные адреса она пропускает и все неверные отсекает? |
Да, там все сложнее оказывается, весь этот код выше для чего то своего, а паттерн вот тут тестируется - valid = options.pattern
, паттерн там такой: https://www.yiiframework.com/doc/api/2.0/yii-validators-emailvalidator#$pattern-detail |
Все равно всего он не проверяет. Либо не допускает корректные адреса, либо пропускает некорректные
Я уж не говорю про интернационализацию. (по современным протоколам почтовых серверов в адресе могут быть и кириллические буквы, и греческие, и арабские, и иероглифы). https://ru.abcdef.wiki/wiki/Email_address Поэтому слишком муторно (а возможно ли?) писать регулярку покрывающую 100% верных адресов, и отбрасывающую 100% неверных. Да и нужно ли. Ведь пользователь может ошибиться в самом адресе. Скажем напишет не voraa@gmail.com, а woraa@gmeil.com (что чаще и происходит) И толку от этих всех проверок |
Она покрывает все верные и не верные, но маил с пробелом в начале и в конце адреса проходит валидацию.
Регулярно уже есть, мне нужно, добавить в эту регулярно, чтобы эти пробелы не проходили валидацию, т. Е. Выдавало ошибку, если они будут присутствовать. |
Andrew2108,
var regex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|("[\S.]+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; console.log([ regex.test('asd@aasd.sd'),// true regex.test(' [email]asd@aasd.sd[/email] '),// false regex.test('asd@aasd.sd '),// false regex.test(' [email]asd@aasd.sd[/email]'),// false regex.test('asd@@aasd.sd'),// false regex.test('asd@aa@sd.sd'),// false regex.test('@asd@sd.sd'),// false regex.test('asd@sd.sd@'),// false regex.test(' @asd@sd.sd'),// false regex.test(' @asd@sd.sd '),// false regex.test(' [email]asd@sd.sd[/email]@'),// false regex.test(' [email]asd@sd.sd[/email]@ ')// false ]); |
А что насчет
kot.matroskin(familiya takaya)@mail.ru kot.matroskin@[IPv6:2001:db8::1] "kot\"matroskin\""@mail.ru и kot.matroskin@-mail.ru Тута видимо такая же косая проверка стоит. Верные не распознала, а неверный приняла |
Понятно, что проверка косая, критикуете-предлагайте, я попросил ведь ответ мне дать на конкретный вопрос, а не задавать мне вопросы. На данный момент я не знаю как регулярки писать поэтому и обратился за помощью к знающим.
|
" zzzz@mail.ru" - пропускает
или "zzzz@mail.ru " - также пропускает |
Часовой пояс GMT +3, время: 12:09. |