Классы символов в языке PHP
При рассмотрении метасимвола точки мы говорили о любом символе, идущем в строке. Однако часто требуется выделить определенное множество значений для него. Например, после слова php должна следовать цифра от 3 до 5. В таких случаях применяют классы символов.
Чтобы создать класс символов, нужно записать в квадратные скобки все доступные значения или их диапазон. Пример:
[0-9] - символ является цифрой;
[a-z] - символ является строчной буквой английского алфавита;
[A-Z] - символ является заглавной буквой английского алфавита;
[a-zA-Z] - символ является любой буквой английского алфавита;
[abc] - символ является любой из букв a, b или с.
Рассмотрим несколько примеров:
php[3-5] - строка должна содержать php3, php4 или php5;
[0-9][a-z] - строка содержит сочетание цифры и символа;
^[0-5][0-9]$ - строка должна состоять из двух цифр (от 00 до 59).
Обратите внимание на последний пример. Символ ^ указывает на то, что строка должна начинаться с цифры из диапазона от 0 до 5, за которой следует еще одна любая цифра. При этом знак доллара $ указывает, что эта цифра должна завершать строку.
Ранее говорилось о том, что символ ^ указывает на начало строки. Помимо этого, его можно применять в классах символов, но он уже будет нести другую смысловую нагрузку.
Рассмотрим пример:
[^0-9] - строка должна содержать хотя бы один символ отличный от цифры;
^[^a-zA-Z] - строка должна начинаться с любого символа, кроме буквы английского алфавита;
[^aAeEiIoOuU] - строка не должна состоять целиком из гласных букв.
В регулярных выражениях типа POSIX для удобства были введены встроенные классы символов (табл. 17.1).
Таблица 17.1. Встроенные классы символов.
Обозначение | Описание |
---|---|
[[:alnum:]] | Любая буква английского алфавита или цифра |
[[:alnum:]] | Любая буква английского алфавита или цифра |
[[:alpha:]] | Любая буква ([a-zA-Z]) |
[[:blank:]] | Пробельный символ или символ с кодом 0 и 255 |
[[:digit:]] | Любая цифра ([0-9]) |
[[:lower:]] | Любая строчная буква английского алфавита ([a—z]) |
[[:upper:]] | Любая заглавная буква английского алфавита ([A-Z]) |
[[:upper:]] | Любая заглавная буква английского алфавита ([A-Z]) |
[[:upper:]] | Любая заглавная буква английского алфавита ([A-Z]) |
[[:punct:]] | Любой знак пунктуации |
[[:space:]] | Любой пробельный символ |
[[:xdigit:]] | Любая шестнадцатеричная цифра ([0-9a-fA-F]) |