Regex pour slug d'URL

Utilisez /^[a-z0-9]+(?:-[a-z0-9]+)*$/ pour vérifier qu'une chaîne entière est un slug d'URL valide. Chaque exemple ci-dessous a été testé avec ce modèle, et vous pouvez l'ouvrir dans le testeur de regex avec les échantillons préchargés.

Mis à jour le

/^[a-z0-9]+(?:-[a-z0-9]+)*$/
Ouvrir dans le testeur de regex
EntréeRésultat
regex-tester✓ Correspondance
hello-world-2026✓ Correspondance
a✓ Correspondance
Hello-World✗ Aucune correspondance
double--dash✗ Aucune correspondance
-leading✗ Aucune correspondance
trailing-✗ Aucune correspondance
with space✗ Aucune correspondance

Fonctionnement du modèle

PartieSignification
[a-z0-9]+Une ou plusieurs lettres minuscules ou chiffres
(?:-[a-z0-9]+)*Un nombre quelconque de mots supplémentaires, chacun précédé d'un seul tiret
^…$La chaîne entière, donc sans tiret en début ou en fin, ni tirets doubles

Exemples de code

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;

Remarques et limites

Transformez vos titres en slugs avec le générateur de slug.

Questions fréquentes

Quelle est la regex pour un slug d'URL ?
/^[a-z0-9]+(?:-[a-z0-9]+)*$/ — elle correspond à la chaîne entière. Consultez le tableau ci-dessus pour voir le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : regex-tester, hello-world-2026, a. Les autres ne correspondent pas.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans le testeur de regex » : le modèle, les drapeaux et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez.