Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярный выражения, ничё не понимаю! 
:(
    Опции темы
Alx
Дата 4.3.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



пишу:

var str = new String("string");
res = str.match("str.ng");
if (res != null)
alert (res)
else
alert ("no")

выводит alert "string";

res = str.match("str[a-z]ng");
или
res = str.match("str\wng");

"no"!

В чём дело?!


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 5.3.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



У меня

str.match("str.ng") даёт - string

str.match("str[a-z]ng") даёт - string

а вот с \w - по идее все нормально, но

str.match("str\wng") даёт - null



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Alx
Дата 5.3.2004, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



мне нужен скрипт, опроеделяющий является ли value поля email е-мейлом. Вот рег. выраж.

/(\w+)@([\w\._]+)/

возвращает null!!

я вот тока не понял, что после @ - набор символов - буква, цифра или подчёркивание, точка, а что такое "_" и где здесь домен первого уровня? (.ru, .com и т.д.)

ЗЫ т.к. я его не нашёл, то пробовал даже

alexandro@yandex - всё равно null!


--------------------
PM MAIL WWW ICQ   Вверх
GoodBoy
Дата 5.3.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата
function test(val) {
    res = val.match("[a-zA-Z._-]+\@[a-zA-Z.-]+\.\w{2,}");
    if (res != null)
        alert (res)
    else
        alert ("no")
}

будет работать для адресов НЕ содержащих русских символов.


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
GoodBoy
Дата 5.3.2004, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Извините... Опять слэши съелись...
Цитата
function test(val) {
    res = val.match("[a-zA-Z._-]+\\@[a-zA-Z.-]+\\.\\w{2,}");
    if (res != null)
        alert (res)
    else
        alert ("no")
}



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Alx
Дата 5.3.2004, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



GoodBoy
спасибо большое! smile.gif


--------------------
PM MAIL WWW ICQ   Вверх
GoodBoy
Дата 5.3.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



ALEXANDRO Есси чо - абращяйсси!!!!!! :-))))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Sardar
Дата 5.3.2004, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
function test(val) {
    res = val.match("[a-zA-Z._-]+\@[a-zA-Z.-]+\.\w{2,}");
    if (res != null)
        alert (res)
    else
        alert ("no")
}

Локалхост не поймает и IP адрес тоже. Да и вообще такое пропустит privet [email protected] smile.gif
Я бы так сделал:
Код

ret=/^\s*[a-zA-Z0-9_-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*\s*$/.test(e_mail);

А если действительно на валидность надо проверять, то выполнять это надо на сервере.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
GoodBoy
Дата 5.3.2004, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Sardar твой privet [email protected] не пропустит, т.к. там есть пробельный символ... Про 0-9 ты прав. Я забыл... Но у тебя не учитывается возможность присутствия символа "." в имени ящика. Т. е. адрес типа [email protected] не пройдет. Опять же зачем возможность присутствия пробельных символов в начале и в конце регэкспа? И цифр в названии доменной зоны? Зоны типа .ru13 я не знаю... :-))))
Все-таки, на мой взгляд такое выражение более правильно:
Цитата
res = val.match("[a-zA-Z0-9._-]+\\@[a-zA-Z0-9.-]+\\.\\w{2,}");



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Sardar
Дата 5.3.2004, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Sardar твой privet [email protected] не пропустит, т.к. там есть пробельный символ

Пропустит, т.к. найдется [email protected], что будет означать true и строка целиком примится как адрес.
Цитата
Зоны типа .ru13 я не знаю

Зоны можно было вручную перечислит, но не хотелось, потому все в кучу smile.gif
Цитата
адрес типа [email protected] не пройдет

Да, точку надо добавить, а вообще лучше RFC по URL'ам найти и точно посмотреть допустимые символы.
Цитата
Все-таки, на мой взгляд такое выражение более правильно:
Цитата

res = val.match("[a-zA-Z0-9._-]+\\@[a-zA-Z0-9.-]+\\.\\w{2,}");

Многоточие все равно пройдет, IP допущен не будет. Слеш перед собакой не нужен.

Вообще нужно покопатся в доке, либо взять готовый рег из PHP скриптов(где то на phpdetail.phpclub.ru лежит).


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
GoodBoy
Дата 5.3.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата
Многоточие все равно пройдет, IP допущен не будет. Слеш перед собакой не нужен.

Это почему же IP допущен не будет?? Этот вариант [a-zA-Z0-9.-]+ предполагает наличие произвольного количества букв, цифр и точек!
Многоточие пройдет, согласен, но от этого можно избавиться так:
Код
res = val.match("[a-zA-Z0-9._-]+\\@([a-zA-Z0-9-]+\\.)+\\w{2,4}");

Здесь будут учтены и IP адреса (хотя я не знаю людей, которые бу указывали в своем мыле адрес а не доменное имя), и отсечена возможность использования многоточия, и недопустима длина доменной зоны меньше 2 и больше 4 символов (по-моему сейчас это именно так .ru, .com, .info).
А насчет слешей перед собакой... Лучше перебдеть, чем недобдеть... :-))))))))))))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Alx
Дата 5.3.2004, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



дык эт вам спасибо! smile.gif а почему мой регэксп не работает?


--------------------
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 6.3.2004, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



Адрес должен соответсвовать следующим условиям:

1. Отрезаем пробелы в начале и в конце
2. Проверяем наличие [@]
3. Проверяем символы до [@] - [a-z],[A-Z],[0-9],[-],[_] (минимум один)
(Точно не знаю допустимо ли начинать адрес с [-] или [_])
5. Проверяем после [@] обязательное наличие [.]
6. Проверяем после [@] символы - [a-z],[A-Z],[0-9],[-],[_]
7. Проверяем символ после [@] - [a-z],[A-Z],[0-9]
8. Проверяем наличие два символа [.] подряд
9. Проверяем наличие хотя бы одного символа между [@] и [.]
10. Проверяем наличие хотя бы одного символа после [.]



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Sardar
Дата 6.3.2004, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Вот чуть построже:
Код

/^\s*[a-z0-9_][a-z0-9-_]*@(?:[a-z0-9_][a-z0-9-_]*(?:\.[a-z0-9-_]+)*)\s*$/i.test(email);

Я не помню, может ли поддомен начинатся с цифры. Только что попробовал найти точный синтаксис мыла - нашел RFC822 - огроменный запутанный текст, BNF грамматики раскиданны по всему документу, на мой взгляд это хороший пример плохой документации.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
nikolin
Дата 7.3.2004, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 6.7.2003
Где: Варна - Болгария

Репутация: нет
Всего: 1



Код
function vrf(x){
m = x.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\.biz)|(\.info)|(\..{2,2}))$)\b/gi);
(m)?alert('Is valid email'):alert('I'snt valid email');
}


Это сообщение отредактировал(а) nikolin - 7.3.2004, 09:27
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.