Fonctionnement du motif
| Partie | Signification |
|---|---|
^https? | Commence par http, suivi optionnellement de s |
:\/\/ | Le littéral :// (barres obliques échappées pour les littéraux regex JavaScript) |
[A-Za-z0-9.-]+ | Nom d'hôte et sous-domaines |
\.[A-Za-z]{2,} | Un point et un domaine de premier niveau d'au moins deux lettres |
(?::\d{1,5})? | Un port optionnel tel que :8080 |
(?:\/[^\s]*)? | Un chemin, une chaîne de requête et un fragment optionnels, jusqu'à un espace |
$ | Fin de la chaîne |
Exemples de code
JavaScript
const re = /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'https?://[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:/[^\s]*)?', value))PHP
preg_match('/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/', $value) === 1;
Remarques et limites
Pour la validation en JavaScript, new URL(value) dans un try/catch est plus strict et couvre tous les cas limites ; utilisez la regex si vous voulez aussi exiger http(s) et un domaine d'apparence publique. Elle rejette volontairement localhost ainsi que les adresses IP nues.
Testeur d’expressions régulières
Saisissez un modèle et observez les correspondances s'afficher en temps réel dans votre texte de test.