Regex d'URL
Trouvez les adresses web d'un texte avec un motif court, et voyez exactement où il s'arrête avant de le mettre dans votre code.
Regex d'URL
Extraire des liens de journaux, d'exports de discussion ou de texte récupéré par scraping est un travail pour une expression régulière, et le motif doit rester assez court pour être lu. Cette page ouvre le testeur de regex avec le motif URL (http/https) de la Bibliothèque de motifs, https?:\/\/[^\s/$.?#][^\s]*, avec les drapeaux gi.
Comment lire le motif
| Partie | Signification |
|---|---|
https? | http, avec un s facultatif |
:\/\/ | Les deux-points et les deux barres obliques, échappés pour que le motif fonctionne aussi entre barres obliques dans le code |
[^\s/$.?#] | Un caractère qui commence le nom d'hôte : ni espace, ni barre oblique, ni signe dollar, ni point, ni point d'interrogation, ni dièse |
[^\s]* | Tout le reste jusqu'à la prochaine espace |
gi | Trouver chaque lien, quelle que soit la casse |
Ce qu'elle capture et ce qu'elle manque
| Texte | Résultat |
|---|---|
https://logicutil.com/tool/regex-tester | L'adresse entière |
http://example.org/page?q=1#top | L'adresse entière, requête et fragment compris |
http://localhost:8080/x | L'adresse entière, port compris |
HTTPS://EXAMPLE.COM/X | Trouvée, grâce au drapeau i |
https://例子.测试/路径 | Trouvée : les domaines et chemins non latins sont conservés |
Visit https://example.com. | https://example.com., avec le point |
(https://example.com/a) | https://example.com/a), avec la parenthèse |
www.example.com | Aucune correspondance : il n'y a pas de schéma |
ftp://files.example.com | Aucune correspondance : seulement http et https |
Une version plus stricte
Pour laisser de côté la ponctuation finale, terminez la correspondance par un lookahead : https?:\/\/[^\s/$.?#][^\s]*?(?=[\].,;:!?)]*(?:\s|$)). Il prend la séquence la plus courte suivie uniquement de ponctuation puis d'une espace ou de la fin du texte : Visit https://example.com. donne ainsi https://example.com, et (https://example.com/a) donne https://example.com/a. La contrepartie : un lien qui se termine vraiment par une parenthèse, comme certaines adresses de Wikipédia, la perd.
Trouver des liens n'est pas les valider
Un tel motif répond à la question "ce texte contient-il quelque chose qui ressemble à un lien", pas "est-ce une adresse qui fonctionne". Pour une seule valeur en JavaScript, new URL(value) est plus strict : il lève une exception sur https:// sans aucun hôte. Utilisez la regex pour trouver des candidats dans le texte, puis laissez new URL() ou votre serveur trancher.
Pages associées
Transformez les liens trouvés en Markdown avec [$&]($&) sur la page rechercher-remplacer par regex, et voyez comment se comportent les drapeaux sur le testeur de regex JavaScript. Les adresses e-mail ont leurs propres pièges, traités dans le guide des regex pour e-mail.