Heim >Web-Frontend >js-Tutorial >Wie kann ich meinen regulären Ausdruck verbessern, um URLs effektiver zuzuordnen?

Wie kann ich meinen regulären Ausdruck verbessern, um URLs effektiver zuzuordnen?

DDD
DDDOriginal
2024-12-22 08:23:09661Durchsuche

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

Verbesserter regulärer Ausdruck für übereinstimmende URLs

Beim Versuch, URLs aus Benutzereingaben zu erkennen und zu analysieren, ist es wichtig, einen effektiven regulären Ausdruck zu verwenden. In Ihrem Fall erfasst Ihr aktueller Ausdruck zwar einige URL-Formate, berücksichtigt jedoch keine URLs, denen ein explizites Protokollschema fehlt, wie z. B. www.google.com.

Überarbeiteter regulärer Ausdruck

Um dieses Problem zu beheben und einen umfassenden URL-Abgleich sicherzustellen, sollten Sie den folgenden überarbeiteten regulären Ausdruck verwenden:

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

Anatomie des Regex

  • Anker: Stellt sicher, dass die Übereinstimmung die gesamte Zeichenfolge startet und beendet.
  • Protokoll (optional): Erfasst das optionale Protokoll „http“ oder „https“. Schema.
  • Domäne: Entspricht dem Domänennamen, einschließlich Subdomänen und Top-Level-Domäne.
  • Port: Erfasst die optionale Portnummer (z. B. , „:8080“).
  • Pfad: Erfasst alle Pfadinformationen nach der Domäne (z. B. „/index.html“).
  • Abfrage: Erfasst die Parameter der Abfragezeichenfolge (z. B. „?name=John“).
  • Fragment: Erfasst die Fragment-ID (z. B. „#footer“).

Dieser überarbeitete reguläre Ausdruck ist weniger restriktiv und findet erfolgreich URLs wie www.google.com sowie solche mit expliziten Protokollen (z. B. http://www. stackoverflow.com).

Beispielimplementierung (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.");
}

Das obige ist der detaillierte Inhalt vonWie kann ich meinen regulären Ausdruck verbessern, um URLs effektiver zuzuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn