Не так давно, когда пришлось все-таки начать писать регистрацию для своего проекта, я столкнулся с такой проблемой, как "проверка на "РП ник"", т.е. на правильное необходимое мне имя игрока в игре. Чтобы это реализовать с помощью PHP мне понадобились так называемые "регулярки", с правильным построением каких я никогда не связывался, да и особо связываться не хотел. Однако, судьба свела нас вместе xD Итак, приступим:
Регулярные выражения – это очень полезный инструмент для разработчиков. С их помощью можно находить, определять или заменять текст, слова или любые другие символы.
Многим начинающим разработчикам кажется, что регулярные выражения очень сложны для понимания и использования. На самом деле, все не так уж сложно, как может показаться.
Основы регулярных выражений
Регулярное выражение |
Означает |
foo |
Строка “foo” |
^foo |
Строка начинается с “foo” |
foo$ |
Строка заканчивается на “foo” |
^foo$ |
«foo» встречается в строке только один раз |
[abc] |
a, b, или c |
[a-z] |
любой символ в нижнем регистре |
[^A-Z] |
любой символ, не находящийся в верхнем регистре |
(gif|jpg) |
Означает как «gif” так и “jpeg” |
[a-z]+ |
Один или более символов нижнего регистра |
[0-9.-] |
Любая цифра, точка или знак минус |
^[a-zA-Z0-9_]{1,}$ |
Любое слово, хотя бы одна буква, число или _ |
([wx])([yz]) |
wy, wz, xy, или xz |
(^A-Za-z0-9) |
Любой символ (не число и не буква) |
([A-Z]{3}|[0-9]{4}) |
Означает три буквы или 4 цифры |
PHP-функции для регулярных выражений
Функция |
Описание |
preg_match() |
Функция preg_match() ищет строку по заданному шаблону, возвращает true, если строка находится и false, в остальных случаях |
preg_match_all() |
Функция preg_match_all() находит все вхождения строки, заданной по шаблону |
preg_replace() |
Функция preg_replace(), действует по тому же принципу, что и ereg_replace(), за исключением того, что регулярные выражения можно использовать как для задания шаблона поиска, так и для строки, на которую следует заменить, найденное значение. |
preg_split() |
Функция preg_split(), действует так же как split(), за исключением того, что регулярное выражение можно использовать в качестве параметра для шаблона поиска. |
preg_grep() |
Функция preg_grep() ищет все элементы входного массива, возвращая все элементы, соответствующие шаблону регулярного выражения. |
preg_quote() |
Экранирует символы регулярного выражения |
Пример
Соответственно, пример проверки на "РП ник":
PHP код:
if(preg_match("/^(([a-zA-Z]{4,12})([_]{1})([a-zA-Z]{4,12}))$/", "Fallen_Angel"))
echo 'Good name.';
else
echo 'Wrong name';
В данном случае результатом проверки будет:
Регулярка проверяет, состоит ли наше игровое имя их тех символов и той конструкции, которая нам необходима.
Полезные материалы
Сервис для проверки правильности регулярного выражения и показа его логической структуры.
Еще один сервис для проверки работы регулярного выражения.
Полезный сервис, где можно провести проверки регулярки в javascript.
Спасибо за внимание.