"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je améliorer mon expression régulière pour faire correspondre les URL plus efficacement ?

Comment puis-je améliorer mon expression régulière pour faire correspondre les URL plus efficacement ?

Publié le 2024-12-14
Parcourir:252

How Can I Improve My Regular Expression to Match URLs More Effectively?

Expression régulière améliorée pour les URL correspondantes

Lorsque vous tentez de détecter et d'analyser des URL à partir des entrées de l'utilisateur, il est crucial d'utiliser une expression régulière efficace. Dans votre cas, même si votre expression actuelle capture certains formats d'URL, elle ne parvient pas à prendre en compte les URL dépourvues de schéma de protocole explicite, telles que www.google.com.

Expression régulière révisée

Pour résoudre ce problème et garantir une correspondance complète des URL, envisagez d'utiliser le format régulier révisé suivant expression :

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)

Anatomie de l'expression régulière

  • Anchors : garantit que le match démarre et termine la chaîne entière.
  • Protocole (facultatif) : capture le protocole facultatif "http" ou "https" schéma.
  • Domaine : correspond au nom de domaine, y compris les sous-domaines et le domaine de premier niveau.
  • Port : capture le numéro de port facultatif (par ex. , ":8080").
  • Chemin : capture toutes les informations de chemin après le domaine (par exemple, "/index.html").
  • Query : capture les paramètres de la chaîne de requête (par exemple, "?name=John").
  • Fragment : capture l'identifiant du fragment (par exemple, "#footer").

Cette expression régulière révisée est moins restrictive et correspondra avec succès aux URL telles que www.google.com, ainsi que ceux dotés de protocoles explicites (par exemple, http://www.stackoverflow.com).

Exemple de mise en œuvre (JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\ ~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\ .~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3