Форма проверки Email исключение?
Доброго времени.
Если может кто, подскажите пожалуйста, никак не могу въехать, есть форма проверки Email адреса, с подсветкой и выведением сообщений: $(document).ready(function() { $('#email').blur(function() { if($(this).val() != '') { var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i; if(pattern.test($(this).val())){ $(this).css({'border' : '2px solid #81fc87'}); $('#valid').text(''); } else { $(this).css({'border' : '2px solid #ff0000'}); $('#valid').text(''); alert('Вы ввели неверный \"email\", такого адреса нет!\r\nПожалуйста проверьте и введите верный адрес.'); }} else { $(this).css({'border' : '2px solid #ff0000'}); $('#valid').text(''); alert('Вы не ввели адрес \"email\", не хотите отправлять?\r\nТогда проигнорируйте это сообщение и нажмите ОК.'); Нужно сделать исключение, чтобы при вводе в поле слов: save или русского: сохранить, не выполнялась проверка в паттерне, те чтобы скрипт пропускал это как нормально введенный Email. Как это сделать? В паттерне: var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i; пытался подставить через || никак не вышло. Заранее СПАСИБО! :thanks: |
/^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$|^save$|^сохранить$/i:) |
Сейчас появилось много длинных доменов первого уровня (включая национальные, которые начинаются с xn--):
https://ru.wikipedia.org/wiki/%D0%A1...B2%D0%BD%D1%8F так что "?[a-z]{2,4}$" в конце надо заменить на "?[a-z0-9-]{2,}$" А в начале: "/^([a-z0-9_\.-])+@" я бы добавил как минимум ещё символ плюса: "/^([a-z0-9_\.\+-])+@" -- http://savepearlharbor.com/?p=188548 Хотя, по спецификации там ещё много символов разрешается на самом деле... |
Большое спасибо!
Сделал вот так: var pattern = /^([a-zа-я0-9_\.\+-])+@[a-zа-я0-9-]+\.([a-zа-я0-9-]{2,}\.)?[a-zа-я0-9-]{2,}$|^save$|^Save$|^SAVE$|^сохранить|^С охранить|^СОХРАНИТЬ$/i; А как на PHP сделать то же самое? Переносил, пробовал добавить русские а-яё, пролазил пачку форумов, толку 0, не пропускает вот такой емайл например: mail@васяпупкин.рф Как победить? Хотя на JS из выражения выше, рисует зеленым (проверка email) и все ок, а в php сейчас стоит вот так и ничего не работает: if (!preg_match('~^([a-zа-яё0-9_\-\.])+@([a-zа-яё0-9_\-\.])+\.([a-zа-яё0-9])+$~i', $_POST['code'])) |
Вот так заработало на PHP: preg_match('~^([a-zA-Zа-яА-Я0-9_\-\.])+@([a-zA-Zа-яА-Я0-9_\-\.])+\.([a-zA-Zа-яА-Я0-9])+$~ui
Есть что то добавить? |
По первому - не надо дублировать в разных регистрах, у тебя стоит флаг i - а значит пройдёт и save и Save и sAvE.
По второму - если копируешь регулярки из js в php - достаточно обернуть в ': /x/i => '/x/i', не надо перепиливать. По третьему - хрень всё это на самом деле, с современным развитием доменных имён нормально проверять на мыло так: ^[^@\s]+@[^@\s]+$ и всё. Ну или вот:). |
Понял спс! 8-)
|
Модификатор i для чего, если диапазоны a-zA-Zа-яА-Я?
Кроме этого диапазон a-z0-9 и подчеркивание, это слово - \w. Не встречал, чтобы почтовые сервера разрешали имена ящиков отличных от латиницы. |
laimas, стандарт не запрещает. А то что не встречали - так и не искали.)
|
Цитата:
|
Часовой пояс GMT +3, время: 23:40. |