О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/
![short_url](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8ae/b62/55f/8aeb6255f475f23b06d503ba341fdbd4.jpg)
Буквы, цифры, дефисы и подчёркивания, от 3 до 16 символов.
Паттерн: /^[a-z0-9_-]{3,16}$/
![username](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d2a/818/d8f/d2a818d8fb099c5a80f49d09edb82021.jpg)
То же, что и юзернейм, только от 6 до 18.
Паттерн: /^[a-z0-9_-]{6,18}$/
![password](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a55/09a/b44/a5509ab44a2e230b1b5046d32f673ae1.jpg)
От себя: более кратко — /^[\w_]{6,18}$/. Аналогично для юзернейма.
Символ # (необязательно), затем слово, состоящее из букв от a до f или цифр, длиной 3 или 6.
Паттерн: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
![hex](https://habrastorage.org/r/w780q1/getpro/habr/post_images/e39/bdd/7f0/e39bdd7f0008b7b9632c8866ebe32cd0.jpg)
За открывающей скобкой < должно стоять слово из букв — имя элемента, затем могут быть атрибуты — любые символы, кроме закрывающей скобки >. Далее — любой текст (содержимое) и закрывающий тэг, т.е. <имя />, или как минимум один пробел, слэш и закрывающаю скобка (самозакрывающийся тэг).
Паттерн: /^<([a-z]+)([^>]+)*(?:>(.*)<\/\1>|\s+\/>)$/
![xml_tag](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8c1/57c/0ad/8c157c0ad6fed6c0bf9f996e57704753.jpg)
Общий вид — логин@поддомен.домен. Логин, как и поддомен — слова из букв, цифр, подчёркиваний, дефисов и точек. А домен (имеется в виду 1го уровня) — это от 2 до 6 букв и точек.
Паттерн: /^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/
![email](https://habrastorage.org/r/w780q1/getpro/habr/post_images/7a8/035/403/7a8035403f6b681d5d11174bf59ee2c5.jpg)
От себя: можно короче — /^([\w\._]+)@\1\.([a-z]{2,6}\.?)$/. Это ещё и чуть правильнее — точка в домене первого уровня может встретиться только один раз и только в конце.
Первым делом — необязательный протокол (http:// или https://), затем последовательность букв, цифр, дефисов, подчёркиваний и точек (домены уровня > 1), потом домен нулевого уровня (от 2 до 6 букв и точек) и, наконец, файловая структура — набор слов из букв, цифр, дефисов, подчёркиваний и точек со слэшем в конце. Всё это может завершаться опять-таки слэшем.
Паттерн: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
![url](https://habrastorage.org/r/w780q1/getpro/habr/post_images/fe9/d28/65f/fe9d2865ffad356aaff5a6da712e9577.jpg)
От себя: лучше так — /^(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?$/
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.
Паттерн: /^(?:(?: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](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d5f/384/e55/d5f384e553e3c48228664e33653b0ce0.jpg)
От себя: по-моему, так правильнее — /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/.
Взято отсюда
1. Часть ЧПУ (человекопонятный URL)
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/
![short_url](https://habrastorage.org/getpro/habr/post_images/8ae/b62/55f/8aeb6255f475f23b06d503ba341fdbd4.jpg)
2. Юзернейм
Буквы, цифры, дефисы и подчёркивания, от 3 до 16 символов.
Паттерн: /^[a-z0-9_-]{3,16}$/
![username](https://habrastorage.org/getpro/habr/post_images/d2a/818/d8f/d2a818d8fb099c5a80f49d09edb82021.jpg)
3. Пароль
То же, что и юзернейм, только от 6 до 18.
Паттерн: /^[a-z0-9_-]{6,18}$/
![password](https://habrastorage.org/getpro/habr/post_images/a55/09a/b44/a5509ab44a2e230b1b5046d32f673ae1.jpg)
От себя: более кратко — /^[\w_]{6,18}$/. Аналогично для юзернейма.
4. Шестнадцатиричный цвет
Символ # (необязательно), затем слово, состоящее из букв от a до f или цифр, длиной 3 или 6.
Паттерн: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
![hex](https://habrastorage.org/getpro/habr/post_images/e39/bdd/7f0/e39bdd7f0008b7b9632c8866ebe32cd0.jpg)
5. XML тэг
За открывающей скобкой < должно стоять слово из букв — имя элемента, затем могут быть атрибуты — любые символы, кроме закрывающей скобки >. Далее — любой текст (содержимое) и закрывающий тэг, т.е. <имя />, или как минимум один пробел, слэш и закрывающаю скобка (самозакрывающийся тэг).
Паттерн: /^<([a-z]+)([^>]+)*(?:>(.*)<\/\1>|\s+\/>)$/
![xml_tag](https://habrastorage.org/getpro/habr/post_images/8c1/57c/0ad/8c157c0ad6fed6c0bf9f996e57704753.jpg)
6. Email
Общий вид — логин@поддомен.домен. Логин, как и поддомен — слова из букв, цифр, подчёркиваний, дефисов и точек. А домен (имеется в виду 1го уровня) — это от 2 до 6 букв и точек.
Паттерн: /^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/
![email](https://habrastorage.org/getpro/habr/post_images/7a8/035/403/7a8035403f6b681d5d11174bf59ee2c5.jpg)
От себя: можно короче — /^([\w\._]+)@\1\.([a-z]{2,6}\.?)$/. Это ещё и чуть правильнее — точка в домене первого уровня может встретиться только один раз и только в конце.
7. URL
Первым делом — необязательный протокол (http:// или https://), затем последовательность букв, цифр, дефисов, подчёркиваний и точек (домены уровня > 1), потом домен нулевого уровня (от 2 до 6 букв и точек) и, наконец, файловая структура — набор слов из букв, цифр, дефисов, подчёркиваний и точек со слэшем в конце. Всё это может завершаться опять-таки слэшем.
Паттерн: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
![url](https://habrastorage.org/getpro/habr/post_images/fe9/d28/65f/fe9d2865ffad356aaff5a6da712e9577.jpg)
От себя: лучше так — /^(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?$/
8. 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.
Паттерн: /^(?:(?: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](https://habrastorage.org/getpro/habr/post_images/d5f/384/e55/d5f384e553e3c48228664e33653b0ce0.jpg)
От себя: по-моему, так правильнее — /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/.
Взято отсюда