Приднестровская поддержка XOOPS
Два метасимвола позволяют осуществить привязку:
□ ^ — привязка к началу строки;
□ $ — привязка к концу строки.
Например, привязку нужно использовать для проверки, содержит ли строка число:
mb_regex_encoding('UTF-8'); // Установка кодировки
$str = '2';
if (mb_ereg('^[0-9]+$', $str)) echo 'Число'; // Выведет: Число
else echo 'Не число';
$str = 'Строка2';
if (mb_ereg('^[0-9]+$', $str)) echo 'Число';
else echo 'Не число'; // Выведет: Не число
Если убрать привязку к началу и концу строки, то любая строка, содержащая хотя бы одну цифру, будет распознана как "Число":
mb_regex_encoding('UTF-8'); // Установка кодировки
$str = 'Строка2';
if (mb_ereg('[0-9]+', $str)) echo 'Число'; // Выведет: Число
else echo 'Не число';
Можно указать привязку только к началу или только к концу строки:
mb_regex_encoding('UTF-8'); // Установка кодировки
$str = 'Строка2';
if (mb_ereg('[0-9]+$', $str)) echo 'Есть число в конце строки';
else echo 'Нет числа в конце строки';
// Выведет: Есть число в конце строки
if (mb_ereg('^[0-9]+', $str)) echo 'Есть число в начале строки';
else echo 'Нет числа в начале строки';
// Выведет: Нет числа в начале строки
В квадратных скобках [] можно указать символы, которые могут встречаться на этом месте в строке. Можно перечислять символы подряд или указать диапазон через тире:
□ [09] — соответствует числу 0 или 9;
□ [0-9] — соответствует любому числу от 0 до 9;
□ [абв] — соответствует буквам "а", "б" и "в";
□ [а-г] — соответствует буквам "а", "б", "в" и "г";
□ [а-яё] — соответствует любой букве от "а" до "я";
□ [АБС] — соответствует буквам "А", "Б" и "С";
□ [А-ЯЁ] — соответствует любой русской букве от "А" до "Я";
□ [а-яА-ЯёЁ] — соответствует любой русской букве в любом регистре;
□ [0-9а-яА-ЯёЁa-zA-Z] — любая цифра и любая буква независимо от регистра и языка. (1)
Значение можно инвертировать, если после первой скобки указать символ ^.
Таким образом можно указать символы, которых не должно быть на этом
месте в строке:
□ [^09] — не цифра 0 или 9;
□ [^0-9] — не цифра от 0 до 9;
□ [^а-яА-ЯёЁa-zA-Z] — не буква.
Вместо перечисления символов можно использовать стандартные классы:
□ [[:alnum:]] — алфавитно-цифровые символы;
□ [[:alpha:]] — буквенные символы;
□ [[:lower:]] — строчные буквы;
□ [[:upper:]] — прописные буквы;
□ [[:digit:]] — десятичные цифры;
□ [[:xdigit:]] — шестнадцатеричные цифры;
□ [[:punct:]] — знаки пунктуации;
□ [[:blank:]] — символы табуляции и пробелов;
□ [[:space:]] — пробельные символы;
□ [[:cntrl:]] — управляющие символы;
□ [[:print:]] — печатные символы;
□ [[:graph:]] — печатные символы, за исключением пробельных;
□ . (точка) — любой символ, кроме символа новой строки (\n). (2)
Что же делать, если нужно найти точку, ведь символ "точка" соответствует любому символу, кроме символа перевода строки? Для этого перед специальным символом необходимо указать символ "" или разместить точку внутри квадратных скобок ([.]). Продемонстрируем это на примере (листинг 13).
Листинг 13. Проверка правильности введенной даты
mb_regex_encoding('UTF-8'); // Установка кодировки
$str = '29,04.2007'; // Неправильная дата (вместо точки указана запятая)
$pattern = '^[0-3][0-9].[01][0-9].[12][09][0-9][0-9]$';
// Символ "" не указан перед точкой
if (mb_ereg($pattern , $str)) echo 'Дата введена правильно';
else echo 'Дата введена неправильно';
// Т. к. точка означает любой символ, выведет: Дата введена правильно
$pattern = '^[0-3][0-9]\.[01][0-9]\.[12][09][0-9][0-9]$';
// Символ "" указан перед точкой
if (mb_ereg($pattern , $str)) echo 'Дата введена правильно';
else echo 'Дата введена неправильно';
// Т. к. перед точкой указан символ "",
// выведет: Дата введена неправильно
$pattern = '^[0-3][0-9][.][01][0-9][.][12][09][0-9][0-9]$';
// Точка внутри квадратных скобок
if (mb_ereg($pattern , $str)) echo 'Дата введена правильно';
else echo 'Дата введена неправильно';
// Выведет: Дата введена неправильно
Точка теряет свое специальное значение, если ее заключить в квадратные скобки. Символ "^" теряет свое специальное значение, если он не расположен сразу после открывающей квадратной скобки. Чтобы отменить специальное значение символа "-", его необходимо указать после перечисления всех символов, перед закрывающей квадратной скобкой. Все специальные символы можно сделать обычными, если перед ними указать символ "".
Количество вхождений символа в строку задается с помощью квантификаторов:
□ {n} — в точности n вхождений символа в строку:
[[:digit:]]{2} — соответствует двум вхождениям любой цифры;
□ {n,} — n или более вхождений символа в строку:
[[:digit:]]{2,} — соответствует двум и более вхождениям любой цифры;
□ {n,m} — не менее n и не более m вхождений символа в строку. Цифры указываются через запятую без пробела:
[[:digit:]]{2,5} — соответствует от двух до пяти вхождениям любой цифры;
□ * — произвольное число вхождений символа в строку (в том числе ни
одного вхождения):
[[:digit:]]* — цифры могут не встретиться в строке или встретиться много раз;
□ + — одно или большее число вхождений символа в строку:
[[:digit:]]+ — цифра может встретиться один или много раз;
□ ? — ноль или одно число вхождений символа в строку:
[[:digit:]]? — цифра может встретиться один раз или не встретиться совсем.
Отправитель | Нити |
---|
6 пользователь(ей) активно (3 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 6 далее... |