Регулярные выражения — это мощный инструмент, который должен быть у каждого разработчика. Они могут совпадать со строкой символов на основе очень сложных параметров, которые могут сэкономить много времени при создании динамических веб-сайтов.
Веб-разработчики сталкиваются с иными задачами, чем разработчики программного обеспечения, но, как правило, многие из одинаковых основ кода остаются. Регулярные выражения действительно имеют крутую начальную кривую обучения, но они могут быть чрезвычайно мощными при правильном использовании.
Самая сложная часть — это изучение синтаксиса и обучение написанию собственного кода регулярных выражений с нуля. Чтобы сэкономить время, мы собрали для вас 30 различных фрагментов кода регулярных выражений, которые вы можете использовать в своих проектах веб-разработки. А поскольку регулярные выражения не ограничены одним языком, вы можете применять эти фрагменты ко всему, от JavaScript до PHP или Python.
1. Надежность пароля
1 ^(?=.*[A-Z].*[A-Z])(?=.*[!@#$&*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$
Проверка надежности пароля часто субъективна, поэтому нет абсолютно правильного решения. Но этот фрагмент регулярного выражения — отличная отправная точка, если вы не хотите писать свой собственный инструмент проверки надежности пароля с нуля.
2. Шестнадцатеричный цвет
1 \#([a-fA-F]|[0-9]){3, 6}
Область веб-разработки повсеместно использует шестнадцатеричные цветовые коды. Этот фрагмент регулярного выражения можно использовать для извлечения совпадений шестнадцатеричного кода из любой строки для любых целей.
3. Подтверждение адреса электронной почты
1 /[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm
Одна из наиболее распространенных задач для разработчика — проверить, отформатирована ли строка в стиле адреса электронной почты. Существует много разных вариантов выполнения этой задачи, поэтому эта ссылка на SitePoint предлагает два отдельных фрагмента кода для проверки синтаксиса электронной почты в строке.
4. IPv4-адрес
1 /\b(?:(?: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]?)\b/
Как и адрес электронной почты, типичный IP-адрес используется для идентификации конкретного компьютера, подключающегося к интернету. Это регулярное выражение проверяет строку на соответствие синтаксису IPv4-адреса.
5. IPv6-адрес
1 (([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])))
В качестве альтернативы вы можете проверить адрес для нового синтаксиса IPv6 с помощью этого более продвинутого фрагмента регулярного выражения. Разница незначительна, хотя и жизненно необходима в процессе разработки.
6. Разделитель тысяч
1 /\d{1,3}(?=(\d{3})+(?!\d))/g
Традиционные системы нумерации требуют запятой, точки или какой-либо другой символ, чтобы маркировать каждую третью цифру большего числа. Этот код регулярного выражения действует на любое число, и будет применять любой выбранный вами символ к каждой третьей цифре, разделяя на тысячи, миллионы и т.д.
7. Добавить HTTP в гиперссылку
1 if (!s.match(/^[a-zA-Z]+:\/\//))
2 {
3 s = 'http://' + s;
4 }
Работаете ли вы в JavaScript, Ruby или PHP, это регулярное выражение может оказаться очень полезным. Оно проверит любую строку URL-адреса, чтобы узнать, имеет ли он префикс HTTP/HTTPS, и, если нет, добавит его соответствующим образом.
8. Вытащить домен из URL
1 /https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
Каждый домен веб-сайта содержит исходный протокол (HTTP или HTTPS) и часто поддомен плюс дополнительный путь к странице. Вы можете использовать этот фрагмент, чтобы сократить все это и вытащить только доменное имя без лишних наворотов.
9. Сортировка ключевых слов по количеству слов
1 ^[^\s]*$ точно соответствует ключевому слову из 1 слова
2 ^[^\s]*\s[^\s]*$ точно соответствует ключевому слову из 2 слов
3 ^[^\s]*\s[^\s]* соответствует ключевым словам не менее 2 слов (2 и более)
4 ^([^\s]*\s){2}[^\s]*$ точно соответствует ключевому слову из 3 слов
5 ^([^\s]*\s){4}[^\s]*$ соответствует ключевым словам из 5 слов и более
Пользователям Google Analytics и инструментов для веб-мастеров действительно понравится это регулярное выражение. Оно может сортировать и упорядочивать ключевые слова по количеству слов, используемых в поиске. Оно может быть численно конкретным (то есть только 5 слов) или оно может соответствовать диапазону слов (2 или более слов). При использовании для сортировки данных аналитики — это одно из мощных выражений. (Источник)
10. Найти допустимую строку Base64 в PHP
1 \?php[ \t]eval\(base64_decode\(\'(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?){1}\'\)\)\;
Если вы являетесь разработчиком PHP, то в какой-то момент вам может понадобиться проанализировать код для поиска двоичных объектов в кодировке Base64. Этот фрагмент может быть применен ко всему коду PHP и будет проверять любые существующие строки Base64.
11. Действительный номер телефона
1 ^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$
Коротко, мило и по существу. Этот код регулярного выражения будет проверять любой традиционный синтаксис телефонных номеров, основанный преимущественно на американском стиле телефонных номеров.
12. Начальные и конечные пробелы
1 ^[ \s]+|[ \s]+$
Используйте этот фрагмент кода, чтобы извлечь начальные/конечные пробелы из строки. Это может не иметь большого значения, но иногда это может повлиять на вывод при извлечении из базы данных или применении к другой кодировке документа.
13. Извлечь источник изображения
1 \< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)
Если по какой-то причине вам нужно извлечь источник изображения прямо из HTML, этот фрагмент кода является идеальным решением. Хотя он может работать гладко на бэкэнде, разработчики внешнего интерфейса JS должны вместо этого полагаться на метод jQuery attr () для внешнего интерфейса.
14. Подтвердить дату в формате ДД / ММ / ГГГГ
1 ^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Даты сложны, потому что они могут отображаться как текст+числа или просто как числа с различными форматами. В PHP есть фантастическая функция даты, но это не всегда лучший выбор при извлечении необработанной строки. Вместо этого рассмотрите возможность использования этого регулярного выражения, созданного для этого конкретного синтаксиса даты.
15. Идентификатор видео на YouTube
1 /http:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi
YouTube годами сохраняет ту же структуру URL, потому что она просто работает. Это также самый популярный сайт для обмена видео в сети, поэтому видео с YouTube, как правило, привлекает больше всего трафика. Если вам нужно извлечь идентификатор видео YouTube из URL-адреса, этот код регулярного выражения идеально подходит и должен отлично работать для всех вариантов структур URL-адресов YouTube.
16. Действительный ISBN
1 /\b(?:ISBN(?:: ?| ))?((?:97[89])?\d{9}[\dx])\b/i
Печатные книги следуют системе нумерации, известной как ISBN. Это может быть довольно сложно, если учесть различия между ISBN-10 и ISBN-13. Однако этот невероятный фрагмент позволяет вам проверить номер ISBN и проверить, является ли он ISBN10 или 13. Весь код написан на PHP, так что это должно оказаться исключительно полезным для веб-разработчиков.
17. Проверьте почтовый индекс
1 ^\d{5}(?:[-\s]\d{4})?$
Создатель этого фрагмента не только бесплатно выпустил свою работу, но и нашел время, чтобы объяснить ее. Вы найдете этот фрагмент полезным, если вы используете типичный 5-значный почтовый индекс или более длинную 9-разрядную версию. Имейте в виду, что это в первую очередь относится к американской системе почтовых индексов, поэтому для других стран могут потребоваться корректировки.
18. Действительное имя пользователя Twitter
1 /@([A-Za-z0-9_]{1,15})/
Вот очень маленький фрагмент кода для сопоставления с именами пользователей Twitter, найденными в строке. Он проверяет синтаксис @mention, который идеально подходит для автоматического сканирования содержимого твита (или твитов).
19. Номера кредитных карт
1 ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$
Проверка номера кредитной карты часто требует безопасной платформы, размещенной в другом месте онлайн. Но регулярные выражения могут быть использованы для минимальных требований типичного номера кредитной карты. Более полный список кодов для отдельных карт можно найти здесь. Это включает в себя Visa, MasterCard, Discover и многие другие.
20. Найти атрибуты CSS
1 ^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}
Вы можете редко запускать регулярные выражения через CSS, но это не невероятно странная ситуация. Этот фрагмент кода может быть использован для извлечения каждого соответствующего CSS-свойства и значения из отдельных селекторов. Оно может быть использовано по ряду причин, например, для просмотра фрагментов CSS или для удаления дублирующих свойств.
21. Убрать комментарии HTML
1 <!--(.*?)-->
Если по какой-либо причине вам необходимо удалить все комментарии из блока HTML, используйте этот код регулярного выражения.
22. URL профиля Facebook
1 /(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/
Facebook невероятно популярен и прошел через множество различных схем URL. В ситуации, когда вы берете URL-адреса профилей от пользователей, может быть полезно проанализировать строки и убедиться, что они правильно структурированы. Этот фрагмент может сделать именно это, и он идеально подходит для всех ссылок в стиле FB.
23. Проверить версию Internet Explorer
1 ^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$
Переход Microsoft на Edge не был единогласным, и многие люди по-прежнему полагаются на классический Internet Explorer. Разработчикам часто нужно проверять версии IE для обработки несоответствий с механизмами рендеринга. Этот фрагмент можно использовать в JavaScript для проверки агента браузера на основе того, какая версия Internet Explorer (5-11) используется.
24. Извлечение цены
1 /(\$[0-9,]+(\.[0-9]{2})?)/
Цены представлены в различных форматах, которые содержат десятичные дроби, запятые и символы валюты. Это регулярное выражение может проверять все эти разные форматы, чтобы извлечь цену из любой строки.
25. Анализировать заголовок электронной почты
1 /\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i
С помощью этой единственной строки кода вы можете анализировать заголовок электронной почты, чтобы извлечь информацию из заголовка. Он может использоваться в тандеме с несколькими электронными письмами, соединенными вместе.
26. Подобрать определенный тип файла
1 /^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i
Когда вы имеете дело с различными форматами файлов, такими как .xml, .html и .js, это может помочь проверить файлы как локально, так и загруженные пользователями. Этот фрагмент извлекает расширение файла, чтобы проверить, является ли оно допустимым из серии допустимых расширений, которые могут быть изменены по мере необходимости.
27. Сопоставить строку URL
1 /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi
Этот фрагмент можно использовать как для строк HTTPS, так и для строк HTTP, чтобы проверить, соответствует ли текст традиционному синтаксису домена TLD. Существует также простая реализация этого регулярного выражения с использованием JavaScript RegExp.
28. Добавить rel=”nofollow” в ссылки
1 (<a\s*(?!.*\brel=)[^>]*)(href=«https?://)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^»]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>
Если вы работаете с пакетом HTML-кода, может быть ужасно применять ручной труд в повторяющихся задачах. Регулярные выражения идеально подходят для этого случая, и они сэкономят много времени. Этот фрагмент может извлечь все ссылки из блока HTML и добавить атрибут rel =”nofollow” к каждому элементу. был достаточно любезен, чтобы опубликовать необработанное выражение плюс рабочий пример на PHP.
29. Подобрать медиа-запросы
1 /@media([^{]+)\{([\s\S]+?})\s*}/g
Разбейте CSS медиа-запросы на их параметры и свойства. Это может помочь вам анализировать внешний CSS более чистым способом с более прямым акцентом на то, как работает код.
30. Синтаксис поиска Google
1 /([+-]?(?:'.+?'|".+?"|[^+\- ]{1}[^ ]*))/g
Вы можете создать свой собственный код регулярного выражения для управления поисковым текстом, используя синтаксис Google. Знак плюс (+) обозначает дополнительные ключевые слова, а знак минус (-) обозначает слова, которые следует игнорировать и исключать из результатов. Это довольно сложный фрагмент, но при правильном использовании он может стать основой для построения собственного алгоритма поиска.
Заключение
Путь к освоению регулярных выражений длинный, но полезный, если вы будете придерживаться его. Помимо типичных инструментов регулярных выражений, лучший способ изучения — это повторение. Попробуйте построить веб-приложения, которые полагаются на эти фрагменты регулярных выражений, чтобы узнать, как они работают в реальном функционировании веб-приложений.
Всем успешной работы и творчества!
0 комментариев