Start · Sprachen · JavaScript · Referenz · URLPattern.hash

URLPattern.hash

Eigenschaft

Schreibgeschützte Zeichenkette mit dem normalisierten Muster, gegen das ein <code>URLPattern</code> den Fragmentteil (<code>#…</code>) einer URL prüft.

seit JavaScript Baseline 2025 (Chrome/Edge 95+, Firefox 142+, Safa Kategorie: webapi

Signatur

get URLPattern.prototype.hash

Beschreibung

Die Eigenschaft hash eines URLPattern-Objekts liefert das Teilmuster für das Fragment einer URL, also den Teil nach dem #. Der Wert wird ohne führendes # zurückgegeben und enthält die Mustersyntax von URLPattern: benannte Gruppen wie :abschnitt, Platzhalter *, optionale Teile {…}? oder reguläre Ausdrücke in Klammern (\\d+).

Wurde beim Erzeugen kein Hash-Muster angegeben – etwa bei new URLPattern({ pathname: "/docs/*" }) –, ist der Wert "*": Das Fragment wird dann beliebig akzeptiert. Beim Konstruktor mit Zeichenkette (new URLPattern("https://example.com/seite#:id")) wird das Hash-Muster aus dem Text nach # gebildet.

Nützlich ist hash vor allem zur Inspektion und Fehlersuche: Man sieht, wie der Browser das übergebene Muster normalisiert hat (z. B. Prozentkodierung von Sonderzeichen). Für das eigentliche Auslesen von Werten aus einer konkreten URL verwendet man dagegen exec() und dort result.hash.groups.

Rückgabewert

Typ
string
Beschreibung
Das normalisierte Muster für den Fragmentteil, ohne führendes #. Standardwert "*", wenn kein Hash-Muster angegeben wurde.

Beispiele

Hash-Muster aus einem Objekt-Init auslesen

const pattern = new URLPattern({ pathname: "/handbuch", hash: "kapitel-:nr" });

console.log(pattern.hash);
console.log(pattern.pathname);
console.log(pattern.search); // nicht angegeben → Platzhalter
kapitel-:nr /handbuch *

Standardwert und String-Konstruktor

const ohneHash = new URLPattern({ pathname: "/docs/*" });
console.log(ohneHash.hash);

const ausString = new URLPattern("https://example.com/hilfe#faq-*");
console.log(ausString.hash);
* faq-*

Praxis: Sprungmarke einer URL per exec() auswerten

// Einfaches Hash-Routing für eine Single-Page-Anwendung
const route = new URLPattern({ hash: "/artikel/:id(\\d+)" });
console.log("Muster:", route.hash);

const treffer = route.exec("https://example.com/app#/artikel/42");
if (treffer) {
  console.log("Artikel-ID:", treffer.hash.groups.id);
  console.log("Eingabe:", treffer.hash.input);
}

console.log(route.test("https://example.com/app#/artikel/abc"));
Muster: /artikel/:id(\d+) Artikel-ID: 42 Eingabe: /artikel/42 false

Schreibschutz der Eigenschaft

"use strict";
const pattern = new URLPattern({ hash: "top" });

try {
  pattern.hash = "bottom"; // nur Getter vorhanden
} catch (err) {
  console.log(err.name);
}
console.log(pattern.hash);
TypeError top

// Wichtig · Fallstricke

  • Schreibgeschützt: Es gibt nur einen Getter. Zuweisungen werden im nicht-strikten Modus stillschweigend ignoriert und lösen im strikten Modus einen TypeError aus. Für ein anderes Muster muss ein neues URLPattern erzeugt werden.
  • Kein führendes #: Der zurückgegebene Wert enthält das Rautezeichen nicht. Ein im Objekt-Init angegebenes führendes # wird entfernt.
  • Normalisierung: Der Wert kann vom Eingabetext abweichen, z. B. werden Nicht-ASCII-Zeichen und Leerzeichen prozentkodiert. Vergleiche daher nicht blind mit dem Originalstring.
  • Groß-/Kleinschreibung: Standardmäßig wird case-sensitiv verglichen; mit der Option { ignoreCase: true } im Konstruktor lässt sich das ändern.
  • Standardwert "*": Fehlt ein Hash-Muster, passt jedes Fragment – auch ein leeres. Wer URLs ohne Fragment erzwingen will, muss hash: "" explizit angeben.
  • Kompatibilität: In Chromium seit Version 95, in Firefox (142) und Safari (26) erst seit 2025. Für ältere Browser gibt es das Polyfill urlpattern-polyfill; in Node.js ist URLPattern ab 23.8 global verfügbar.