[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
bob marley
Доброго времени суток
Вопрос такой:почему не выполняется условие на проверку длинны текста?
Если написать в поле одну букву,то выводит ошибку,а если две,то нет..
А В УСЛОВИИ ТО ТРИ!
Свернутый текст

$name = $_POST['name'];
preg_match("/[А-Яа-я]{3,}/", $name, $pmname);
IF($pmname == FALSE)
{
echo '<p>Имя должно состоять только из русских букв и не менее трех символов</p>'."\n";
}


Рабочий вариант:
Свернутый текст

$name = $_POST['name'];
preg_match("/^[а-яё]{3,}$/iu", $name, $pmname);
IF($pmname == FALSE)
{
echo '<p>Имя должно состоять только из русских букв и не менее трех символов</p>'."\n";
}


Спасибо всем,кто принимал участие!



Спустя 1 минута, 32 секунды (22.02.2012 - 21:21) nugle написал(а):
поменяй на
preg_match("/[а-яё]{3,}/u", $name, $pmname);

Спустя 10 секунд (22.02.2012 - 21:21) inpost написал(а):
для ютф - модификатор u,
не хватает буквы ё
проверка делается так:
if(preg_match())
echo '';

Спустя 40 секунд (22.02.2012 - 21:22) Winston написал(а):
А также заякорить нужно с помощью ^ $

Спустя 2 минуты, 31 секунда (22.02.2012 - 21:25) bob marley написал(а):
Winston
А убрал якорь:он из-за него просто тоже тупил.И если текст из маленьких букв и больших ошибку выдавал..Сейчас все сделаю и якорь уберу!
inpost
Хорошо!Сейчас сделаю т.к. вы говорит!Не знал если честно,что к utf8 надо модификатор..

Спустя 1 минута, 32 секунды (22.02.2012 - 21:26) nugle написал(а):
i'm sorry!
сократил регулярку, а забыл модификатор i поставить. Итоговая регулярка примет вид
preg_match("/^[а-яё]{3,}$/iu", $name, $pmname);

Спустя (22.02.2012 - 21:26) Winston написал(а):
Цитата (bob marley @ 22.02.2012 - 20:25)
А убрал якорь:он из-за него просто тоже тупил

Что значит тупит? blink.gif
Без якорей регулярка будет работать не так как тебе нужно.

Спустя 2 минуты, 23 секунды (22.02.2012 - 21:29) bob marley написал(а):
Winston
Я имел ввиду:не верно выполняла условие тоже..Текст должен был быть либо полностью на заглавных буквах или полностью на строчных..

Сделал как вы говорили,все работает.Вот какая регулярка вышла у меня:
preg_match("/^[А-ЯЁа-яё]{3,}$/u", $name, $pmname);


Всем плюсую в карму!

Спустя 1 минута (22.02.2012 - 21:30) nugle написал(а):
bob marley
убери верхний регистр и поставь i модификатор

Спустя 1 минута, 17 секунд (22.02.2012 - 21:31) bob marley написал(а):
Ок.Как раз хотел спросить на счет i..Все ок!

Спустя 4 минуты, 59 секунд (22.02.2012 - 21:36) Winston написал(а):
Цитата (bob marley @ 22.02.2012 - 20:29)
либо полностью на заглавных буквах или полностью на строчных

preg_match("/^(?:[А-ЯЁ]{3,}|[а-яё]{3,})$/u", $name, $pmname);


_____________
伊戈尔
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.