Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.06.2018, 06:15
Новичок на форуме
Отправить личное сообщение для AlexPebody Посмотреть профиль Найти все сообщения от AlexPebody
 
Регистрация: 29.06.2018
Сообщений: 8

Форма проверки 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; пытался подставить через || никак не вышло.

Заранее СПАСИБО!
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2018, 06:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

/^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$|^save$|^сохранить$/i
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 29.06.2018, 08:23
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сейчас появилось много длинных доменов первого уровня (включая национальные, которые начинаются с 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
Хотя, по спецификации там ещё много символов разрешается на самом деле...
Ответить с цитированием
  #4 (permalink)  
Старый 29.06.2018, 08:45
Новичок на форуме
Отправить личное сообщение для AlexPebody Посмотреть профиль Найти все сообщения от AlexPebody
 
Регистрация: 29.06.2018
Сообщений: 8

Большое спасибо!

Сделал вот так: 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']))

Последний раз редактировалось AlexPebody, 29.06.2018 в 09:21.
Ответить с цитированием
  #5 (permalink)  
Старый 29.06.2018, 09:40
Новичок на форуме
Отправить личное сообщение для AlexPebody Посмотреть профиль Найти все сообщения от AlexPebody
 
Регистрация: 29.06.2018
Сообщений: 8

Вот так заработало на PHP: preg_match('~^([a-zA-Zа-яА-Я0-9_\-\.])+@([a-zA-Zа-яА-Я0-9_\-\.])+\.([a-zA-Zа-яА-Я0-9])+$~ui

Есть что то добавить?
Ответить с цитированием
  #6 (permalink)  
Старый 29.06.2018, 09:54
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

По первому - не надо дублировать в разных регистрах, у тебя стоит флаг i - а значит пройдёт и save и Save и sAvE.
По второму - если копируешь регулярки из js в php - достаточно обернуть в ': /x/i => '/x/i', не надо перепиливать.
По третьему - хрень всё это на самом деле, с современным развитием доменных имён нормально проверять на мыло так: ^[^@\s]+@[^@\s]+$ и всё. Ну или вот.
__________________
29375, 35

Последний раз редактировалось Aetae, 29.06.2018 в 10:14.
Ответить с цитированием
  #7 (permalink)  
Старый 29.06.2018, 09:58
Новичок на форуме
Отправить личное сообщение для AlexPebody Посмотреть профиль Найти все сообщения от AlexPebody
 
Регистрация: 29.06.2018
Сообщений: 8

Понял спс! 8-)
Ответить с цитированием
  #8 (permalink)  
Старый 29.06.2018, 10:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Модификатор i для чего, если диапазоны a-zA-Zа-яА-Я?
Кроме этого диапазон a-z0-9 и подчеркивание, это слово - \w.
Не встречал, чтобы почтовые сервера разрешали имена ящиков отличных от латиницы.
Ответить с цитированием
  #9 (permalink)  
Старый 29.06.2018, 12:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

laimas, стандарт не запрещает. А то что не встречали - так и не искали.)
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 29.06.2018, 12:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Aetae
стандарт не запрещает.
Я знаю что нет запрета и на !#$@... вот только зарегистрировать ящик на русском не говоря уже об экзотике, такого не встречалось, хотя я их где только не открывал. И такое поведение вполне понятно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма для загрузки файла по ссылке kupidon Общие вопросы Javascript 64 18.02.2018 18:23
Отправка формы после ajax проверки ShutTap Общие вопросы Javascript 15 08.04.2016 11:46
Не могу разобраться с коллекциями alexandr2006 Backbone.js 0 24.02.2016 10:47
Форма для проверки кода Mrs.Haneki Работа 0 10.05.2015 10:47
Объединить три конструкции проверки полей в одну golopogos Элементы интерфейса 0 27.01.2015 10:04