Skip to content

Instantly share code, notes, and snippets.

@mrcolts
Forked from Andrew8xx8/regexp.php
Created July 27, 2020 08:28
Show Gist options
  • Save mrcolts/193720abc6c4c7eb924919815198ac31 to your computer and use it in GitHub Desktop.
Save mrcolts/193720abc6c4c7eb924919815198ac31 to your computer and use it in GitHub Desktop.
Полезные регулярные выражения
<?php
/*
* Юзернейм
*
* Буквы, цифры, дефисы и подчёркивания, от 3 до 16 символов.
* Начинаться должно всегда с буквы латинского алффавита
*/
preg_match('%^[a-z][a-z0-9_-]{3,16}$%', $userName);
/*
* Пароль
*
* То же что и юзер нейм только от 6 символов и может начинаться с цыфры
*/
preg_match('%^[a-z0-9_-]{6,18}$%', $password);
/*
* XML тег
*
* За открывающей скобкой < должно стоять слово из букв — имя элемента, затем могут быть атрибуты
* — любые символы, кроме закрывающей скобки >. Далее — любой текст (содержимое) и закрывающий тэг,
* т.е. <имя />, или как минимум один пробел, слэш и закрывающаю скобка (самозакрывающийся тэг).
*/
preg_match('%<([a-z]+)([^>]+)*(?:>(.*)</\1>|\s+/>)$%', $xmlTag);
/*
* Email
*
* Общий вид — логин@поддомен.домен. Логин, как и поддомен — слова из букв, цифр, подчёркиваний,
* дефисов и точек. А домен (имеется в виду 1го уровня) — это от 2 до 6 букв и точек.
*/
preg_match('%^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$%', $email);
/*
* URL
*
* Первым делом — необязательный протокол (http:// или https://), затем последовательность букв,
* цифр, дефисов, подчёркиваний и точек (домены уровня > 1), потом домен нулевого уровня (от 2 до
* 6 букв и точек) и, наконец, файловая структура — набор слов из букв, цифр, дефисов, подчёркиваний
* и точек со слэшем в конце. Всё это может завершаться опять-таки слэшем.
*/
preg_match('%^(https?://)?([\da-z\.-]+)\.([a-z\.]{2,6})([/\w \.-]*)*/?$%', $url);
/*
* IP адрес
*
* 4 группы цифр (от 1 до 3 цифр в каждой) разделены точками. Если группа состоит из 3 символов,
* то первый из них — 1 или 2; если 1, то остальные от 0 до 9, а если 2 — то второй от 0 до 5;
* если второй символ от 0 до 4, то третий — от 0 до 9, а если второй 5 — то третий от 0 до 5.
* Если же группа состоит из 2 символов, то первый — от 1 до 9, второй — от 0 до 9. В случае
* односимвольной группы этим символом может быть цифра от 1 до 9.
*/
preg_match('%^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$%', $ip);
/*
* Комментаррии CSS
* Находим первое вхождение слеш звёздочка, далее берём любой символ или последовательность
* слеш звёздочка, пока не встретится последовательность звёздочка слеш. Квантификатор не жадный, по этому
* матчит ближайшие открывающие и закгрывающие вхождения оставляя внутри открывающие
*/
preg_match_all("%/\*(.|[^/*])*?\*/\s+%i", $cssCode, $comments);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment