Регулярки под шоп

#1
Доброго времени, други и подруги, поделюсь, пожалуй, самой нужной информацией, которую использую при проверке данных в своих скриптах.
RegExp - (от англ. regular expression, сокращенно regex или regexp, иногда ещё называют rational expression) они же регулярные выражения (страница из википедии) - это набор спец. символов, которые используются как «эталон», при сравнении с проверяемыми данными, так это этот «образец», часто называют «паттерном» или «шаблоном».
Основные проверки, которые используем при разработке в шопах, на входящие данные:
Номера кредиток:
Код:
[0-9]{13,16}
Номер телефона:
Код:
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$
ICQ:
Код:
([1-9])+(?:-?\d){4,}}
Набор из букв и цифр (латиница):
Код:
^[a-zA-Z0-9]+$}
Набор из букв и цифр (латиница + кириллица):
Код:
^[а-яА-ЯёЁa-zA-Z0-9]+$}
Домен (например site.com):
Код:
^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$}
IPv4:
Код:
((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)}
IPv6:
Код:
((^|:)([0-9a-fA-F]{0,4})){1,8}$}
Имя пользователя (с ограничением 2-20 символов, которыми могут быть буквы и цифры, первый символ обязательно буква):
Код:
^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$}
Пароль (Строчные и прописные латинские буквы, цифры):
Код:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$}
Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов):
Код:
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$}
Дата в формате YYYY-MM-DD:
Код:
[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01]) }
UPD. Более строгая проверка:
Код:
(19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)}
Дата в формате DD/MM/YYYY:
Код:
(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d}
Целые числа и числа с плавающей точкой (разделитель точка):
Код:
\-?\d+(\.\d{0,})?}
UUID:
Код:
^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$}
Широта или долгота:
Код:
-?\d{1,3}\.\d+}
E-mail:
Код:
^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$}
URL на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф»:
Код:
~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&?+=\~/-]*)?(?:#[^ '\"&]*)?$~i}
Время HH:MM:SS:
Код:
^([0-1]\d|2[0-3])(:[0-5]\d){2}$
Mac-адрес:
Код:
([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}
P.S. Не претендую на открытие истин, чесно отпишу - что сам ен создавал, все найдено в сети, знаю, что есть камрад @SlaSoft , который более чем я в регулярках разбирается, поэтому, первенство в регэкспах отдам ему по праву.
 
Останнє редагування:
Симпатії: Baco
S

SlaSoft

Maestro
#2
Не, я когда их пишу, я стараюсь пользовать исключительно простые регулярки

Сложные регулярки не пишу, не вижу смысла, да и нужны они в очень редких случаях

есть базовые основы
например метасиволы
\d
\s
\w
\W
но это все ... на любителя

Более интересно применеие регулярок в htaccess
 
A

Alex

Шопмейкер
#3
Не, я когда их пишу, я стараюсь пользовать исключительно простые регулярки

Сложные регулярки не пишу, не вижу смысла, да и нужны они в очень редких случаях
...
Более интересно применеие регулярок в htaccess
Дык ALarik и дал базовые :)
 
OP
ALarik

ALarik

expert
Thread Starter #4
Можно попроще, как написал @SlaSoft, но когда нужен запрос, который в одну строку может проверить либо тел. либо номер кредитки, при вбиве, и такой код ты постоянно юзаешь. Интересно было бы в теме глянуть на другие регулярки, кто какими пользуется.
 
Зверху