|
|
|
| Привет Всем!
Пожалуйста проясните, правильно мое понимание. ([\w]+) означает что может быть любая буква, встречающаяся 1 и более раз.. (^[\w]+$) - поиск буквы осуществляется только в начале и в конце строки... И почему печатается ветвь echo "Выражение в строке встречается"; ведь в строке встречаются цифры
$re = '|^[\w]+$|i';
$str = "Им4я4";
if (preg_match($re, $str))
{
echo "Выражение в строке встречается";
}
else
{
echo "Выражение в строке НЕ встречается!";
}
|
| |
|
|
|
|
|
|
|
для: ДобрыйУхх
(03.02.2010 в 11:47)
| |
...........
\w
Любой символ, образующий "слово"
\W
Любой символ, не образующий "слово"
Каждая пара таких специальных последовательностей делит полное множество всех символов на два непересекающихся множества. Любой символ соответствует одному и только одному множеству из пары.
"word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl. Определение букв и цифр управляется символьными таблицами, с которыми PCRE был собран. И, как следствие, эти наборы могут отличаться в различных локализированных дистрибутивах. Например, в локали "fr" (Франция) некоторые символы с кодом выше 128 используются для записи ударных символов и, соответственно, соответствуют маске \w.
http://softtime.ru/dic/id_dic=134&id_group=3
| |
|
|
|
|
|
|
|
для: heed
(03.02.2010 в 13:04)
| | тогда цитата из книги, по которой изучаю ошибочна и регулярки лучше изучать по другой методе(
""
. Если имя
пользователя не должно содержать ничего кроме букв, то для этого следует
воспользоваться следующим регулярным выражением в формате Perl:
'|^[\w]+$|i'
которое соответствует строке, содержащей одну или более букв. Если кроме
букв в имени или пароле следует разрешить использование чисел и пробель-
ных символов, то регулярное выражение следует расширить следующим об-
разом:
"^[\w\d\s]+$|i"
"" | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(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(), взависимости от локали | |
|
|
|