Не корректная валидация email


#1

В коде, который делает валидацию емеила (js/tygh/core.js:112) допущена не так чтобы ошибка, а неточность, из-за которой возможен ввод адреса вроде name@domain или вообще адреса русскими буквами.
Предлагаю заменить это

            email: function(email)
            {
                return /\S+@\S+.\S+/i.test(email) ? true : false;
            },

на это

            email: function(email)
            {
                return /(?:[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])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-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])+)\])/i.test(email) ? true : false;
            },

Этот формат соответствует RFC 5322


Форма регистрации
#2

Спасибо за предложение. Передали его разработчикам


#3

Русские домены уже давно есть.
После ряда проблем, мы решиоли максимально упростить валидацию.
Если клиент хочет ввести не валидный адрес он все равно это сделает.


#4

cs-cart версии 4.9.1
появляются аккаунты с вот такими емейлами:
xxx@gmail,com
xxx@mail .ru
x xx@mail.ru
xxx@gmail.com;

как с этим бороться?


#5

Включите капчу для регистрации


#6

присоединяюсь к вопросу, что сложного задать паттерн, хотя бы подскажите как это сделать

создал тему-просьбу, неужели никто не может подсказать


#7

Ответил вам в теме