Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ай да регулярка, пропускает цифры...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
makar3000
Отправлено: 03 Августа, 2013 - 14:28:02
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


Добрых выходных Улыбка

Сделал регулярку:

А она зараза числа пропускает. А нужно только что бы пропускала А-Яа-я. и пробелы.

В чем косяк?
 
 Top
esterio
Отправлено: 03 Августа, 2013 - 14:29:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




makar3000 пишет:
preg_match('!^([А-Яа-я\.]+)!iu', $name)
 
 Top
LIME
Отправлено: 03 Августа, 2013 - 14:31:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ёЁ пропускает?
 
 Top
makar3000
Отправлено: 03 Августа, 2013 - 14:38:07
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


LIME Да пропускает.

esterio Нечего не изменилось пропускает все равно цифры-мдее... Даже и латиницу пропускает.... Ща взорвусь!
 
 Top
teddy
Отправлено: 03 Августа, 2013 - 14:41:37
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(!preg_match("/^[А-Яа-яёЁ\s]+$/", trim($name)))
  2.     {
  3.         echo "Введите корректные данные";
  4.     }
  5.  

Оно?

(Отредактировано автором: 03 Августа, 2013 - 14:57:17)

 
 Top
Panoptik
Отправлено: 03 Августа, 2013 - 14:44:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




да ладно
makar3000 пишет:
esterio Нечего не изменилось пропускает все равно цифры-мдее... Даже и латиницу пропускает....


вы взяли точно то что вам посоветовал esterio ?
там слеш экранирует точку, но если вам нужно не точка а пробел, так поставьте туда пробел вместо точки даже в ваш пример.

Помните! Назаэкранированная точка в символьном классе равняется любому символу!

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $matches = null;
  3. $string = 'фывафыва фыва 1312 вфыаждывофа віащpsdf';
  4. $returnValue = preg_match('!^([А-Яа-я ]+)!iu', $string, $matches);
  5.  

результат
CODE (htmlphp):
скопировать код в буфер обмена
  1.   0 => 'фывафыва фыва ',
  2.   1 => 'фывафыва фыва ',
  3. )


-----
Just do it
 
 Top
LIME
Отправлено: 03 Августа, 2013 - 14:44:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




teddy пробел не является специальным символом
потому \ будет воспринят буквально
и про точку забыл
/^[А-Яа-яёЁ\. ]+$/u
(Добавление)
Panoptik пишет:
Назаэкранированная точка в символьном классе
везде
 
 Top
teddy
Отправлено: 03 Августа, 2013 - 14:46:02
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




LIME
Я отредактировал ) добавил s
 
 Top
Мелкий Супермодератор
Отправлено: 03 Августа, 2013 - 14:48:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




makar3000 пишет:
^([А-Яа-я.]+)

Здесь написано:
Совпадает в начале строки, после которой сразу идёт один или больше символ а-я.

Для несовпадения выражения требуется только первый символ, не входящий в маску. Во всех других позициях может стоять всё, что угодно.
Забыли ограничить поиск концом строки $.


-----
PostgreSQL DBA
 
 Top
makar3000
Отправлено: 03 Августа, 2013 - 14:49:49
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1.  
  2. $err = '';
  3. // Прочий код
  4.  
  5. $name = 'Бел. Яз 23';
  6. if(!$err && !preg_match('!^([А-Яа-я\. ]+)!iu', $name)) $err = 'Имя предмета может содержать только кириллицу';
  7.  
  8.  


И в итоге функция не выводит ошибку если указать цифры...
(Добавление)
Мелкий И вправду. Рабочий вариант: '!^[А-Яа-я\. ]+$!iu'
 
 Top
teddy
Отправлено: 03 Августа, 2013 - 14:51:47
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




 
 Top
makar3000
Отправлено: 03 Августа, 2013 - 14:54:06
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


Всем спасибо, вопрос исчерпан. Тему можно закрыть. Жаль не могу каждому поставить спасибо.
 
 Top
LIME
Отправлено: 03 Августа, 2013 - 14:55:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Мелкого не прочитали?
/[^А-Яа-яёЁ\. ]/u
 
 Top
makar3000
Отправлено: 03 Августа, 2013 - 14:56:40
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)

[+]


LIME Я прочитал и исправил. Что не так в '!^[А-Яа-я\. ]+$!iu'

Убрал скобки все заработало.

(Отредактировано автором: 03 Августа, 2013 - 14:57:12)

 
 Top
LIME
Отправлено: 03 Августа, 2013 - 14:59:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




makar3000 пишет:
Я прочитал
невнимательно
Мелкий пишет:
Для несовпадения выражения требуется только первый символ, не входящий в маску.
мой шаблон выше проверяет до первого символа не из символьного класса
остаток строки можно уже не проверять при первом же совпадении
(Добавление)
только инверсию перед preg_match надо убрать...и тут минус операция
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB