Регулярное выражение для URL slug

Используйте /^[a-z0-9]+(?:-[a-z0-9]+)*$/, чтобы проверить, что вся строка является корректным URL slug. Каждый пример ниже проверен по этому шаблону, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/^[a-z0-9]+(?:-[a-z0-9]+)*$/
Открыть в Regex Tester
ВводРезультат
regex-tester✓ Совпадение
hello-world-2026✓ Совпадение
a✓ Совпадение
Hello-World✗ Нет совпадения
double--dash✗ Нет совпадения
-leading✗ Нет совпадения
trailing-✗ Нет совпадения
with space✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
[a-z0-9]+Одна или несколько строчных латинских букв или цифр
(?:-[a-z0-9]+)*Любое количество последующих слов, каждое после одного дефиса
^…$Вся строка целиком — поэтому в начале, в конце и подряд не допускаются дефисы

Примеры кода

JavaScript

const re = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'[a-z0-9]+(?:-[a-z0-9]+)*', value))

PHP

preg_match('/^[a-z0-9]+(?:-[a-z0-9]+)*$/', $value) === 1;

Примечания и ограничения

Превращайте заголовки в slug с помощью Генератора slug.

Часто задаваемые вопросы

Какое регулярное выражение используется для URL slug?
/^[a-z0-9]+(?:-[a-z0-9]+)*$/ — шаблон проверяет всю строку целиком. Что делает каждая часть, см. в таблице выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: regex-tester, hello-world-2026, a. Остальные — нет.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и примеры текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.