Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Seit September 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die URL Pattern API definiert eine Syntax, die zur Erstellung von URL-Musterabgleichern verwendet wird. Diese Muster können mit URLs oder einzelnen URL-Komponenten abgeglichen werden.
Muster werden mit der URLPattern-Schnittstelle angegeben. Die Mustersyntax basiert auf der Syntax der path-to-regexp-Bibliothek. Muster können enthalten:
Details zur Syntax finden Sie im Abschnitt Mustersyntax weiter unten.
Repräsentiert ein Muster, das mit URLs oder Teilen von URLs abgeglichen werden kann. Das Muster kann erfassende Gruppen enthalten, die Teile der passenden URL extrahieren.
Die Syntax für Muster basiert auf der path-to-regexp JavaScript-Bibliothek. Diese Syntax ist ähnlich wie die, die in Ruby on Rails oder JavaScript-Frameworks wie Express oder Next.js verwendet wird.
Jedes Muster kann eine Kombination aus festem Text und Gruppen enthalten. Der feste Text ist eine Zeichenfolge, die genau übereinstimmt. Gruppen stimmen mit einer beliebigen Zeichenfolge basierend auf den Abgleichsregeln überein. Jeder URL-Teil hat seine eigenen Standardregeln, die unten erklärt werden, aber sie können überschrieben werden.
Standardmäßig wird eine Gruppe, die den pathname-Teil der URL abgleicht, alle Zeichen außer dem Schrägstrich (/) abgleichen. Im hostname-Teil wird die Gruppe alle Zeichen außer dem Punkt (.) abgleichen. In allen anderen Teilen wird die Gruppe alle Zeichen abgleichen. Der Segment-Platzhalter ist nicht gierig, was bedeutet, dass er die kürzeste mögliche Zeichenfolge abgleicht.
Anstatt die Standardabgleichsregeln für eine Gruppe zu verwenden, können Sie ein Regex für jede Gruppe angeben, indem Sie es in Klammern setzen. Dieses Regex definiert die Abgleichsregeln für die Gruppe. Unten ist ein Beispiel für einen Regex-Abgleicher auf einer benannten Gruppe, die die Gruppe nur abgleicht, wenn sie eine oder mehrere Ziffern enthält:
Sie können auch Regex verwenden, wenn Sie ein URLPattern mit der Objektsyntax konstruieren.
Der pathname-URL-Teil beginnt immer mit /. Wenn Sie das / in Ihrem regulären Ausdruck weglassen, schlägt der Abgleich fehl. Das unten stehende Beispiel
Die folgenden Beispiele enthalten das /:
Der Startanker (^) und der Endanker ($) werden verwendet, um Muster am Anfang bzw. Ende der Prüfzeichenkette zu verankern. Während diese für den Beginn und das Ende eines URL-Teils angegeben werden können, sind sie redundant. Dies liegt daran, dass alle URL-Teile implizit von dem Anker ^ am Anfang und von dem Anker $ am Ende gefolgt werden.
Der folgende Code zeigt, dass es egal ist, ob das ^ angegeben wird oder nicht. Das Beispiel verwendet ein Muster im protocol-URL-Teil, aber die anderen Teile der URL verhalten sich gleich.
Der unten stehende Code zeigt, dass es egal ist, ob das $ angegeben wird oder nicht.
Lookahead und Lookbehind Bedingungen erlauben Ihnen, anzugeben, dass Text vor oder hinter der aktuellen Parseposition einem bestimmten Muster entspricht, ohne dass dieses Match erfasst oder die Zeichen konsumiert werden.
Es gibt vier Arten von Bedingungen:
Seien Sie vorsichtig bei der Verwendung von Lookahead- und Lookbehind-Bedingungen mit URLPattern, da es Verhalten gibt, das Sie als unintuitiv empfinden könnten. Beispielsweise würden Sie erwarten, dass die folgende Lookahead-Bedingung einen pathname von /ab abgleicht, dies geschieht jedoch nicht.
Die URLPattern-Engine gleicht die Prüfzeichenkette gegen das pathname-Muster ab, findet zuerst das Match für /a und stellt dann fest, dass das nächste Zeichen in der Test-URL b ist — dieses jedoch nicht konsumiert. Die Engine setzt den Abgleich der Test-URL am nicht konsumierten Zeichen b fort, aber es bleibt nichts im Muster, um es abzugleichen, was dazu führt, dass das Match fehlschlägt.
Damit der Abgleich funktioniert, muss das Muster alle Zeichen in der Testzeichenkette konsumieren. Um das b-Zeichen zu konsumieren, könnten Sie b am Ende des Ausdrucks hinzufügen, einen . verwenden, um ein beliebiges Zeichen abzugleichen, oder .*, um alle Zeichen nach der Lookahead-Bedingung abzugleichen:
Das nächste Beispiel zeigt ein negatives Lookahead-Match für /a, dem kein b folgt. Beachten Sie, dass die Bedingung von .* gefolgt wird, um das von der Bedingung erfasste Zeichen zu konsumieren.
Das folgende Beispiel zeigt ein positives Lookbehind-Match, das bei einem Pfadnamen wie /ba übereinstimmt. Das Muster passt auf /, dann . um das nächste Zeichen zu konsumieren, gefolgt von der Bedingung, dass das vorherige Zeichen ein b war, und dann einem a.
Dieses Beispiel zeigt ein negatives Lookbehind-Match, das bei einem Pfadnamen wie /<not b>a übereinstimmt. Das Muster passt auf /, dann . um das nächste Zeichen (x) zu konsumieren, gefolgt von der Bedingung, dass das vorherige Zeichen kein b war, und dann einem a.
Einige andere Regex-Muster funktionieren möglicherweise nicht wie erwartet:
Klammern müssen in Bereichsausdrücken innerhalb von URLPattern entkommen werden, obwohl sie dies in RegExp nicht tun.
Gruppen können entweder benannt oder unbenannt sein. Benannte Gruppen werden spezifiziert, indem der Gruppenname mit einem Doppelpunkt (:) vorangestellt wird. Regex-Gruppen, die nicht von einem Doppelpunkt und einem Namen vorangestellt sind, sind unbenannt. Unbenannte Gruppen sind im Abgleichsergebnis numerisch indiziert, basierend auf ihrer Reihenfolge im Muster.
Gruppen können auch Modifikatoren haben. Diese werden nach dem Gruppennamen (oder nach dem Regex, wenn es eines gibt) angegeben. Es gibt drei Modifikatoren: ?, um die Gruppe optional zu machen, +, um die Gruppe ein- oder mehrmals zu wiederholen, und *, um die Gruppe null- oder mehrmals zu wiederholen.
Muster können auch Gruppentrennzeichen enthalten. Dies sind Teile eines Musters, die von geschweiften Klammern ({}) umgeben sind. Diese Gruppentrennzeichen werden im Abgleichsergebnis nicht wie erfassende Gruppen erfasst, können jedoch wie Gruppen Modifikatoren haben. Wenn Gruppentrennzeichen nicht durch einen Modifikator geändert werden, werden sie behandelt, als ob die Elemente in ihnen einfach Teil des übergeordneten Musters wären. Gruppentrennzeichen dürfen keine anderen Gruppentrennzeichen enthalten, können jedoch alle anderen Musteritems enthalten (erfassende Gruppen, Regex, Platzhalter oder fester Text).
In Mustern, die gegen den pathname-Teil einer URL abgeglichen werden, erhalten Gruppen automatisch ein Schrägstrich- (/) Präfix, wenn die Gruppendefinition von einem Schrägstrich (/) vorangestellt wird. Dies ist nützlich für Gruppen mit Modifikatoren, da es ermöglicht, dass wiederholte Gruppen wie erwartet funktionieren.
Wenn Sie das automatische Präfixing nicht wünschen, können Sie es deaktivieren, indem Sie die Gruppe mit Gruppentrennzeichen ({}) umgeben. Gruppentrennzeichen haben kein automatisches Präfixing-Verhalten.
Das Platzhalterzeichen (*) ist eine Abkürzung für eine nicht benannte erfassende Gruppe, die alle Zeichen null- oder mehrmals abgleicht. Sie können dies überall im Muster platzieren. Das Platzhalterzeichen ist gierig, was bedeutet, dass es die längste mögliche Zeichenfolge abgleichen wird.
Abschließende Schrägstriche in einem Pfadnamen werden nicht automatisch abgeglichen. Das unten stehende Beispiel zeigt, dass ein URLPattern-Abgleich für einen Pfadnamen von /books https://example.com/books abgleichen wird, aber nicht https://example.com/books/ (und umgekehrt):
Wenn Sie beides abgleichen möchten, müssen Sie ein Abgleichsmuster verwenden, das beides zulässt. Der einfachste Ansatz ist die Verwendung eines Gruppentrennzeichens, das einen Schrägstrich enthält, gefolgt vom optionalen Modifikator. Dies wird das Muster mit oder ohne abschließenden Schrägstrich abgleichen.
Wenn ein Muster geparst wird, wird es automatisch in eine kanonische Form normalisiert. Zum Beispiel werden Unicode-Zeichen im pathname-Prozent-codiert, punycode-codiert im hostname, Standardportnummern werden weggelassen, Pfade wie /foo/./bar/ werden zu /foo/bar zusammengefasst, etc. Darüber hinaus gibt es einige Musterrepräsentationen, die zur selben zugrunde liegenden Bedeutung parsen, wie foo und {foo}. Solche Fälle werden auf die einfachste Form normalisiert. In diesem Fall wird {foo} zum Beispiel zu foo normalisiert.
Sowohl die in URLPattern definierten Abgleichsmuster als auch die in URLPattern.test() und URLPattern.exec() verwendeten Test-URLs ermöglichen die Eingaben mit einer optionalen Basis-URL zu spezifizieren (diese Basis-URL ist ein separates Parameter bei der Angabe der URL als Zeichenfolge und eine separate Eigenschaft bei der Angabe der URL als Objekt).
Wenn eine Basis-URL definiert ist, können URL-Teile von der Basis-URL erben und zur Festlegung von Teilen des Musters oder der Test-URL verwendet werden. Die URL-Auflösung ist ähnlich dem, was Sie erwarten würden, wenn Sie eine URL auflösen, die mit einer Basis-URL spezifiziert ist.
Der username und das password werden niemals von der Basis-URL geerbt.
Nur die "spezifischeren" URL-Teile als der speziellste Teil, der in der Eingabe definiert ist, werden von der Basis-URL geerbt. Die folgende Liste zeigt die Reihenfolge der Spezifität:
Das bedeutet, wenn beispielsweise das protocol in der Eingabe-URL angegeben ist, ist nichts spezifischer, daher wird nichts von der Basis-URL geerbt. Wenn jedoch der pathname-Teil in der Eingabe angegeben ist, können das protocol, der hostname und der port von der Basis-URL geerbt werden, aber search und hash werden nicht.
Beachten Sie, dass URL-Komponenten, die in der Zeichenfolge/dem Eingabeobjekt nicht angegeben oder von der Basis-URL geerbt werden, standardmäßig den Platzhalterwert ("*") für ein URLPattern und die leere Zeichenfolge ("") für eine Test-URL annehmen.
Die URL Pattern API behandelt viele Teile der URL standardmäßig als Groß- und Kleinschreibung unterscheidend beim Abgleichen. Im Gegensatz dazu verwenden viele clientseitige JavaScript-Frameworks eine Groß- und Kleinschreibung ignorierende URL-Abgleichung. Eine ignoreCase-Option ist im URLPattern()-Konstruktor verfügbar, um bei Bedarf eine Groß- und Kleinschreibung ignorierende Abgleichung zu ermöglichen.
Das Einstellen der ignoreCase-Option auf true im Konstruktor schaltet alle Abgleichsoperationen für das angegebene Muster auf Groß- und Kleinschreibung ignorierend um:
Das folgende Beispiel zeigt, wie ein URLPattern eine spezifische URL-Komponente filtert. Wenn der URLPattern()-Konstruktor mit einem strukturierten Objekt von Komponentenmuster aufgerufen wird, nehmen alle fehlenden Komponenten standardmäßig den Platzhalterwert * an.
Das folgende Beispiel zeigt, wie man ein URLPattern aus einer vollständigen URL-Zeichenfolge mit eingebetteten Mustern konstruiert. Zum Beispiel kann ein : sowohl das Protokollsuffix einer URL sein, wie https:, als auch der Beginn einer benannten Mustersgruppe, wie :foo. Es "funktioniert einfach", wenn keine Mehrdeutigkeit besteht, ob ein Zeichen Teil der URL-Syntax oder der Mustersyntax ist.
Das folgende Beispiel zeigt, wie ein URLPattern aus einer mehrdeutigen Zeichenfolge konstruiert wird, wobei Zeichen als Teil der Mustersyntax behandelt werden. In diesem Fall könnte das :-Zeichen das Suffix der Protokollkomponente oder es könnte das Präfix für eine benannte Gruppe im Muster sein. Der Konstruktor entscheidet, dies als Teil des Musters zu behandeln und bestimmt daher, dass es sich um ein relatives Pfadnamensmuster handelt. Da keine Basis-URL vorhanden ist, kann der relative Pfadname nicht aufgelöst werden und es wird ein Fehler ausgelöst.
Das folgende Beispiel zeigt, wie ein mehrdeutiges Konstruktorzeichenfolgenzeichen entkommen werden kann, um als URL-Trennzeichen anstatt als Musterzeichen behandelt zu werden. Hier wird : als \\: entkommen.
Das folgende Beispiel zeigt, wie test() und exec() Basis-URLs verwenden können.
Das folgende Beispiel zeigt, wie Basis-URLs auch zur Konstruktion des URLPattern verwendet werden können. Die Basis-URL wird strikt als URL behandelt und kann keine Mustersyntax selbst enthalten.
Das Muster erbt nur URL-Teile von der Basis-URL, die weniger spezifisch sind als die in den anderen Eigenschaften.
In diesem Fall ist pathname angegeben, sodass das Protokoll und der Host geerbt werden können, aber nicht die Suche, das Fragment, der Benutzername oder das Passwort. Die Eigenschaften, die nicht geerbt werden, nehmen standardmäßig die Platzhalterzeichenfolge ("*"). Die Ausnahme bildet der Port, der auf die leere Zeichenfolge gesetzt wird, da der hostname von der Basis-URL übernommen wird (der einen "Standardport"-Wert impliziert).
Das folgende Beispiel zeigt, wie Eingabewerte, die Mustern entsprechen, später aus dem exec()-Ergebnisobjekt abgerufen werden können.
Die input-Eigenschaft ist die Zeichenfolge, die mit dem Muster übereinstimmt: in diesem Fall ist es cdn.example.com. Die groups-Eigenschaft enthält erfasste Gruppen, die basierend auf ihrer Reihenfolge nummeriert und entweder nach Nummer bei unbenannten oder nach Name bei benannten Gruppen indiziert sind. In diesem Fall gibt es nur eine unbenannte Gruppe für die Platzhaltereigenschaft mit dem Wert cdn.
Das folgende Beispiel zeigt, wie Gruppen benutzerdefinierte Namen erhalten können, die verwendet werden können, um den passenden Wert im Ergebnisobjekt abzurufen.
Die Abgleichsmuster im Muster werden durch das :-Symbol gefolgt von einem Namen angegeben. Die gleichen Namen erscheinen dann als Schlüssel in der groups-Eigenschaft, wobei die passenden Werte der übereinstimmende Teil der Test-URL sind. Die input-Eigenschaft enthält den gesamten Teil der URL, der mit dem pathname-Muster übereinstimmt.
Das folgende Beispiel zeigt, wie eine Abgleichsgruppe einen regulären Ausdruck verwenden kann, um entweder /foo oder /bar in einer Test-URL abzugleichen. Die Gruppe ist unbenannt, wird also im Ergebnis über eine Indexnummer referenziert.
Das folgende Beispiel zeigt, wie Sie einen benutzerdefinierten regulären Ausdruck mit einer benannten Gruppe verwenden.
Die Gruppe wird type genannt und stimmt mit einem Pfad überein, der entweder /foo oder /bar ist.
Das folgende Beispiel zeigt, wie eine Abgleichsgruppe optional gemacht wird, indem ein ?-Modifikator danach platziert wird.
Für die pathname-Komponente verursacht dies auch, dass ein vorausgehendes /-Zeichen als optionales Präfix zur Gruppe behandelt wird.
Platzhalter können ebenfalls optional gemacht werden. Dies mag keinen Sinn ergeben, da sie bereits die leere Zeichenfolge abgleichen, aber es macht auch das Präfix / optional in einem Pfadnamenmuster.
Das folgende Beispiel zeigt, wie eine Abgleichsgruppe wiederholbar gemacht wird, indem ein +-Modifikator danach platziert wird. In der pathname-Komponente behandelt dies auch das /-Präfix als speziell, so dass es effektiv der Anfang der wiederholten Gruppe ist.
Beachten Sie, dass /product nicht übereinstimmt, da es nicht von / und mindestens einem Zeichen gefolgt wird.
Das folgende Beispiel zeigt, wie eine Abgleichsgruppe sowohl optional als auch wiederholbar gemacht wird. Tun Sie dies, indem Sie einen *-Modifikator nach der Gruppe platzieren. Auch hier behandelt die pathname-Komponente das /-Präfix speziell.
Es wird sowohl optional als auch mit der Gruppe wiederholt.
Beachten Sie, dass im Gegensatz zum vorherigen Beispiel /product übereinstimmt, da die wiederholten Segmente, einschließlich /, optional sind. Es muss jedoch mindestens ein Zeichen vorhanden sein, das nach einem Schrägstrich erfasst wird, um die wiederholte Gruppe abzugleichen.
Das folgende Beispiel zeigt, wie geschweifte Klammern (ein Gruppentrennzeichen) mit einer benannten Gruppe verwendet werden können, um ein benutzerdefiniertes Präfix und/oder Suffix festzulegen, auf das ein nachfolgender ?, * oder +-Modifikator angewendet wird.
Zum Beispiel stimmt {:subdomain.}* gegen jede Subdomain von example.com und die Domäne selbst ab. Der Abgleich wird der benannten Gruppe "subdomain" zugewiesen.
Das folgende Beispiel zeigt, wie geschweifte Klammern verwendet werden können, um feste Textwerte optional oder wiederholbar zu machen, ohne eine erfasste Gruppe zu verwenden.
Das untenstehende Muster stimmt entweder mit /product oder /product/ überein, aber da Gruppentrennzeichen standardmäßig nicht erfassend sind, wird das Ergebnis nicht in einer entsprechenden Abgleichsgruppe gefunden.
Das folgende Beispiel zeigt, wie viele Funktionen über mehrere URL-Komponenten hinweg kombiniert werden können.
| URL Pattern |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.