Regex pour URL (http et https)

Utilisez /^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/ pour vérifier qu'une chaîne entière est une URL (http et https) valide. Chaque exemple ci-dessous a été testé avec ce motif, et vous pouvez l'ouvrir dans le testeur de Regex avec les exemples déjà chargés.

Mis à jour le

/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/
Ouvrir dans le testeur de Regex
EntréeRésultat
https://example.com✓ Correspondance
http://sub.example.co.uk:8080/path?q=1#top✓ Correspondance
https://devpack.app/regex-tester✓ Correspondance
example.com✗ Pas de correspondance
ftp://example.com✗ Pas de correspondance
https://localhost✗ Pas de correspondance
http://exa mple.com✗ Pas de correspondance

Fonctionnement du motif

PartieSignification
^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 false

Python

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.

Questions fréquentes

Quelle est la regex pour URL (http et https) ?
/^https?:\/\/[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?::\d{1,5})?(?:\/[^\s]*)?$/ — elle correspond à la chaîne entière. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : https://example.com, http://sub.example.co.uk:8080/path?q=1#top, https://devpack.app/regex-tester. Les autres ne correspondent pas.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans le testeur de Regex » : le motif, les drapeaux et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez.