Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ничего кроме букв
 
 автор: ДобрыйУхх   (03.02.2010 в 11:47)   письмо автору
 
 

Привет Всем!

Пожалуйста проясните, правильно мое понимание. ([\w]+) означает что может быть любая буква, встречающаяся 1 и более раз.. (^[\w]+$) - поиск буквы осуществляется только в начале и в конце строки... И почему печатается ветвь echo "Выражение в строке встречается"; ведь в строке встречаются цифры

$re = '|^[\w]+$|i';
$str = "Им4я4";

if (preg_match($re, $str))
{
    echo "Выражение в строке встречается";
}
else
{
    echo "Выражение в строке НЕ встречается!";
}

  Ответить  
 
 автор: heed   (03.02.2010 в 13:04)   письмо автору
 
   для: ДобрыйУхх   (03.02.2010 в 11:47)
 


...........

\w
Любой символ, образующий "слово"

\W
Любой символ, не образующий "слово"


Каждая пара таких специальных последовательностей делит полное множество всех символов на два непересекающихся множества. Любой символ соответствует одному и только одному множеству из пары.

"word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl. Определение букв и цифр управляется символьными таблицами, с которыми PCRE был собран. И, как следствие, эти наборы могут отличаться в различных локализированных дистрибутивах. Например, в локали "fr" (Франция) некоторые символы с кодом выше 128 используются для записи ударных символов и, соответственно, соответствуют маске \w.


http://softtime.ru/dic/id_dic=134&id_group=3

  Ответить  
 
 автор: ДобрыйУхх   (03.02.2010 в 18:12)   письмо автору
 
   для: heed   (03.02.2010 в 13:04)
 

тогда цитата из книги, по которой изучаю ошибочна и регулярки лучше изучать по другой методе(

""
. Если имя
пользователя не должно содержать ничего кроме букв, то для этого следует
воспользоваться следующим регулярным выражением в формате Perl:
'|^[\w]+$|i'
которое соответствует строке, содержащей одну или более букв. Если кроме
букв в имени или пароле следует разрешить использование чисел и пробель-
ных символов, то регулярное выражение следует расширить следующим об-
разом:
"^[\w\d\s]+$|i"

""

  Ответить  
 
 автор: heed   (03.02.2010 в 19:24)   письмо автору
 
   для: ДобрыйУхх   (03.02.2010 в 18:12)
 

однажды видел такой фломастер ,) который белым цветом закрашивает буквы .
Тогда найдите такой фломастер, закрасьте :) и замените первое выражение на

'/^[A-Za-zА-яЁё]{1,32}$/'

, а второе
'/^[\w\s]{1,32}$/'
, например если перед проверкой текст был обработан trim(), и если от 1го до 32х символов достаточно, и если именно любые пробельные символы \r\n\t... а не просто пробелы

Но \w иногда приходится заменять чем-то таким [0-9_A-Za-zА-яЁё], если не работает как ожидалось.

//модификатор /i тоже бывает не работает как и функции strtoupper() strtolower(), взависимости от локали

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования