Регулярное выражение для ISO 8601 duration
Шаблон для P3Y6M4DT12H30M5S с опциональными частями и ведущим P/T.
ПресетСтраница примера инструмента
Регулярное выражение для ISO 8601 duration — поля заполнены примером, их можно менять. Настройки уедут в ссылку «Поделиться», а заголовок страницы и вкладки описывают исходный пресет, а не текущие поля.
Об этом примере
Длительность по ISO 8601 пишут с префиксом P и, при наличии времени, с T: P3Y6M4DT12H30M5S. Шаблон допускает опциональные блоки лет, месяцев, дней, часов, минут и секунд в правильном порядке и требует хотя бы одного компонента. Тест P1DT2H30M — пример из суток, двух часов и тридцати минут. Значения без ведущего P или с нарушенным порядком отвергаются. Пресет помогает разбирать периоды в расписаниях и медиа-метаданных.
Флаги пишутся подряд, без запятой и без пробелов. Поддерживаются g (все совпадения), i (без учёта регистра), m (^ и $ в каждой строке), s (. включает перевод строки), u (режим Unicode), y (поиск с позиции lastIndex), v (наборы Unicode вместо одиночных классов) и d (индексы начала совпадений). Порядок не важен: «giu» и «ug» — одно и то же.
Объяснение
Начало строки затем 'P' затем впереди не конец строки затем цифра (один или более раз) затем 'Y' (необязательно) затем цифра (один или более раз) затем 'M' (необязательно) затем цифра (один или более раз) затем 'D' (необязательно) затем 'T' затем цифра (один или более раз) затем 'H' (необязательно) затем цифра (один или более раз) затем 'M' (необязательно) затем цифра (один или более раз) затем '.' затем цифра (один или более раз) (необязательно) затем 'S' (необязательно) (необязательно) затем конец строки
Диаграмма выражения
Railroad — структура AST: терминалы, ветки и петли. NFA — переходы между состояниями автомата, ε-переходы отмечены пунктиром.
Подсветка токенов
Цвет показывает роль фрагмента: литерал, класс, квантор, группа и т.д.
Live-тест
Готовые регулярки
Каталог регулярок →Найдено: 66 из 66
- Регулярное выражение для email
[^@\s]+@[^@\s]+\.[a-z]{2,} - Регулярное выражение для телефона РФ
^(\+7|8)[\s(-]*\d{3}[\s)-]*\d{3}[\s-]*\d{2}[\s-]*\d{2}$ - Регулярное выражение для URL
^https?://[^\s/$.?#].[^\s]*$ - Регулярное выражение для IPv4
^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ - Регулярное выражение для даты ISO
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ - Регулярное выражение для даты РФ
^(0[1-9]|[12]\d|3[01])\.(0[1-9]|1[0-2])\.(\d{4})$ - Регулярное выражение для времени HH:MM
^([01]\d|2[0-3]):[0-5]\d$ - Регулярное выражение для ИНН
^(\d{10}|\d{12})$ - Регулярное выражение для СНИЛС
^\d{3}-\d{3}-\d{3} \d{2}$ - Регулярное выражение для номера карты
^\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}$ - Регулярное выражение для UUID
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ - Регулярное выражение для slug
^[a-z0-9]+(?:-[a-z0-9]+)*$ - Регулярное выражение для HEX-цвета
^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$ - Регулярное выражение для MAC-адреса
^([0-9a-f]{2}[:-]){5}[0-9a-f]{2}$ - Регулярное выражение для IPv6
^(?:[0-9a-f]{4}:){7}[0-9a-f]{4}$ - Регулярное выражение для Base64
^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ - Регулярное выражение для semver-версии
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ - Регулярное выражение для времени HH:MM:SS
^([01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d{1,3})?$ - Регулярное выражение для JWT
^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$ - Регулярное выражение для MIME-типа
^[a-zA-Z0-9!#$&\-^_.+]+/[a-zA-Z0-9!#$&\-^_.+]+(?:;\s*[a-zA-Z0-9!#$&\-^_.+]+=(?:"[^"]*"|[^;"]+))*$ - Регулярное выражение для пути файловой системы
^(?:/[\w.\-]+)+/?$|^\.{0,2}(?:/[\w.\-]+)*/?$|^[\w.\-]+(?:/[\w.\-]+)*/?$ - Регулярное выражение для JSON-строки
^"(?:[^"\\\x00-\x1F]|\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4}))*"$ - Регулярное выражение для многострочного комментария
^/\*[\s\S]*?\*/$ - Регулярное выражение для cron-выражения
^\S+\s+\S+\s+\S+\s+\S+\s+\S+$ - Регулярное выражение для маркера SQL-инъекции
\b(?:union\s+select|select\s+.+\s+from|or\s+1\s*=\s*1|and\s+1\s*=\s*1|--|/\*|;\s*drop\s+table|'\s*or\s*') - Регулярное выражение для GUID Microsoft
^\{?[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}\}?$ - Регулярное выражение для IPv6-CIDR
^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}/(?:\d{1,2}|1[0-1]\d|12[0-8])$ - Регулярное выражение для числа с разделителями
^[+-]?\d{1,3}(?:[,\s]\d{3})+(?:\.\d+)?$|^[+-]?\d+(?:\.\d+)?$ - Регулярное выражение для отрицательного числа
^-[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ - Регулярное выражение для шестнадцатеричной строки
^(?:[0-9a-fA-F]{2}[\s-]?)+[0-9a-fA-F]{2}$|^(?:[0-9a-fA-F]{2})+$ - Регулярное выражение для HTML-тега
^<(\w+)(?:\s+[^>]*)?>.*?<\/\1>$ - Регулярное выражение для HTML-комментария
<!--[\s\S]*?--> - Регулярное выражение для CSS-цвета в hex
#([0-9a-fA-F]{3}){1,2}\b - Регулярное выражение для Markdown-ссылки
\[([^\]]+)\]\(([^)\s]+)(?:\s+"[^"]*")?\) - Регулярное выражение для query-string параметра
[?&]([\w-]+)=([^&]+) - Регулярное выражение для международного телефона
^\+[1-9]\d{6,14}$ - Регулярное выражение для email по RFC 5322 (упрощённое)
^[A-Za-z0-9!#$%&'*+/=?^_`{|}~.-]+@[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$ - Регулярное выражение для IPv4-CIDR
^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\/(?:3[0-2]|[12]?\d)$ - Регулярное выражение для полного IPv6
^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$ - Регулярное выражение для доменного имени
^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$ - Регулярное выражение для TCP-порта
^([1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$ - Регулярное выражение для hostname
^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$ - Регулярное выражение для email-заголовка
^[A-Za-z0-9-]+:\s.+$ - Регулярное выражение для UUID v4
^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ - Регулярное выражение для ISBN-13
^(?:978|979)-\d{1,5}-\d{1,7}-\d{1,7}-\d$ - Регулярное выражение для ORCID
^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$ - Регулярное выражение для IBAN
^[A-Z]{2}\d{2}[A-Z0-9]{1,30}$ - Регулярное выражение для VIN
^[A-HJ-NPR-Z0-9]{17}$ - Регулярное выражение для римского числа
^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$ - Регулярное выражение для двоичного числа
^[01]+$ - Регулярное выражение для восьмеричного числа
^0[0-7]+$ - Регулярное выражение для экспоненциальной формы
^[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$ - Регулярное выражение для процента
^(?:100(?:\.0+)?|\d{1,2}(?:\.\d+)?|\.\d+|[0-9]\d?(?:\.\d+)?)%$ - Регулярное выражение для номера карты с пробелами
^(?:\d{4}[\s-]?){3}\d{4}$ - Регулярное выражение для SWIFT/BIC
^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$ - Регулярное выражение для биржевого тикера
^[A-Z]{1,5}$ - Регулярное выражение для ISO-кода валюты
^[A-Z]{3}$ - Регулярное выражение для bcrypt-хеша
^\$2[aby]\$\d{2}\$[./A-Za-z0-9]{53}$ - Регулярное выражение для SHA-256
^[a-f0-9]{64}$ - Регулярное выражение для SHA-1
^[a-f0-9]{40}$ - Регулярное выражение для MD5
^[a-f0-9]{32}$ - Регулярное выражение для даты и времени ISO 8601
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?$ - Регулярное выражение для даты RFC 822
^[A-Za-z]{3}, \d{1,2} [A-Za-z]{3} \d{4} \d{2}:\d{2}:\d{2} [+-]\d{4}$ - Регулярное выражение для Unix timestamp
^\d{10}$ - Регулярное выражение для ISO 8601 duration
^P(?!$)(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+(?:\.\d+)?S)?)?$ - Регулярное выражение для ISO-недели
^\d{4}-W(0[1-9]|[1-4]\d|5[0-3])$