Maison >interface Web >js tutoriel >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 ?

DDD
DDDoriginal
2024-12-22 08:23:09661parcourir

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 l'expression régulière révisée suivante :

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

Anatomie de la Regex

  • Anchors : garantit que la correspondance commence et termine la chaîne entière.
  • Protocole (facultatif) : captures le protocole optionnel "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").
  • Requête : capture les paramètres de la chaîne de requête (par exemple, "?name=John").
  • Fragment : capture l'identifiant du fragment (par exemple, "#footer").

Ceci l'expression régulière révisée est moins restrictive et correspondra avec succès aux URL telles que www.google.com, ainsi qu'à celles avec des 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.");
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn