URLPattern: test()-Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die test()
-Methode der URLPattern
-Schnittstelle nimmt einen URL-String oder ein Objekt mit URL-Teilen und gibt einen Boolean zurück, der angibt, ob der gegebene Eingang dem aktuellen Muster entspricht.
Syntax
test(input)
test(url)
test(url, baseURL)
Parameter
input
-
Ein Objekt, das die einzelnen URL-Teile bereitstellt. Die Objektmitglieder können
protocol
,username
,password
,hostname
,port
,pathname
,search
,hash
oderbaseURL
sein. url
-
Ein String, der eine absolute oder relative URL definiert. Wenn eine relative URL angegeben wird, muss auch
baseURL
bereitgestellt werden, und zusammen müssen sie sich zu einer absoluten URL auflösen. Wenn der Eingabewert nicht geparst werden kann oder eine relative URL ohne Basis-URL bereitgestellt wird, gibt die Methodefalse
zurück. baseURL
Optional-
Ein String, der die Basis-URL darstellt, die verwendet werden soll, wenn
url
eine relative URL ist. Wenn nicht angegeben, ist der Standardwertundefined
. Wenn angegeben, aber die Basis-URL nicht geparst werden kann, gibt die Methodefalse
zurück.
URL-Teile, die in der url
/input
nicht angegeben sind, können unter bestimmten Umständen von einer Basis-URL geerbt werden.
Ausgelassene Teile werden als leere Strings behandelt.
Rückgabewert
Ein boolean
.
Ausnahmen
Beschreibung
Die Methode wird auf einem URLPattern
aufgerufen und gibt eine Eingabe-URL als String mit einer optionalen Basis-URL oder als Objekt mit Eigenschaften für jeden URL-Teil an.
Die Methode gibt true
zurück, wenn alle Komponenten der Test-URL/Eingabe mit allen Komponenten des Musters übereinstimmen, und false
, wenn eine Komponente nicht übereinstimmt.
Die Methode gibt auch false
zurück, wenn eine relative url
übergeben wird, aber baseURL
nicht angegeben ist (eine absolute Test-URL kann nicht aufgelöst werden).
Beachten Sie, dass input.baseURL
beim Übergeben eines input
-Objects immer optional ist.
Vererbung von einer BaseURL
URL-Teile, die spezifischer als der unspezifischste Teil in der url
definiert sind, können von baseURL
(oder von input.baseURL
für input
) geerbt werden.
Intuitiv bedeutet dies, dass, wenn der pathname
-Teil in der Eingabe angegeben ist, die Teile links davon in einer URL von der Basis-URL geerbt werden können (protocol
, hostname
und port
), während die Teile rechts davon nicht geerbt werden können (search
und hash
).
Der username
und das password
werden nie von einer Basis-URL geerbt.
Für weitere Informationen siehe Vererbung von einer BaseURL in der API-Übersicht.
Beispiele
Die Beispiele zeigen, wie die test()
-Methode verwendet wird, um eine URL mit einem Muster abzugleichen.
In jedem Fall wird das Ergebnis der test()
auf der Konsole ausgegeben.
Testen einer absoluten URL
Zuerst definieren wir das Muster, das zum Abgleichen von URLs verwendet wird.
Dieses Muster stimmt mit URLs überein, die entweder das http
- oder https
-Protokoll benutzen, Subdomains von .example.com
sind und einen Pfad haben, der /books/
gefolgt von einem beliebigen Wert ist.
const pattern = new URLPattern("http{s}?://*.example.com/books/:id");
Als Nächstes wird mit zwei absoluten URL-Strings abgeglichen.
Die erste passt, aber die zweite nicht, da die Test-URL keine Subdomain von example.com
ist.
console.log(pattern.test("https://store.example.com/books/123")); // true
console.log(pattern.test("https://example.com/books/123")); // false
Testen einer relativen URL
Dieses Beispiel verwendet dasselbe Muster wie zuvor, um eine Reihe von relativen URLs zu testen.
const pattern = new URLPattern("http{s}?://*.example.com/books/:id");
Als Nächstes wird mit einigen relativen URLs abgeglichen.
Der Fall passt, da die aufgelöste URL https://store.example.com/books/123
ist, während die zweite nicht passt, da die aufgelöste URL keine Subdomain von example.com
ist.
console.log(pattern.test("/books/123", "http://store.example.com")); // true
console.log(pattern.test("/books/123", "http://example.com")); // false
Dieser Test passt nicht, da die bereitgestellte URL relativ ist und keine baseURL
bereitgestellt wird.
Beachten Sie, dass Sie einen Test definieren können, der nur mit einem pathname
übereinstimmt, aber Sie müssen die Objekteingabe verwenden.
console.log(pattern.test("/books/123")); // false
Dieser Test passt nicht, da die Basis-URL keine gültige URL ist und zusammen mit /books/123
nicht zu einer absoluten URL aufgelöst werden kann.
console.log(pattern.test("/books/123", "data:text/plain,hello world!")); // false
Testen eines URL-Objekts
Dieses Beispiel verwendet dasselbe Muster wie zuvor, um eine Reihe von URLs zu testen, die als strukturierte Objekte definiert sind.
const pattern = new URLPattern("http{s}?://*.example.com/books/:id");
Der erste Fall passt, da er genau gegen jeden Teil des Musters übereinstimmt:
console.log(
pattern.test({
protocol: "https",
hostname: "store.example.com",
pathname: "/books/123",
}),
); // true
In diesem Code ist der pathname
vorhanden und die fehlenden Teile werden in der baseURL
bereitgestellt.
Das Ergebnis ist dasselbe wie im vorherigen Code.
console.log(
pattern.test({
pathname: "/books/123",
baseURL: "http://store.example.com",
}),
); // true
Diese strukturierte URL stimmt nicht mit dem Muster überein, da das Protokoll file
ist (nicht https
oder http
).
console.log(
pattern.test({
protocol: "file",
hostname: "store.example.com",
pathname: "/books/123",
}),
); // false
Spezifikationen
Specification |
---|
URL Pattern> # dom-urlpattern-test> |
Browser-Kompatibilität
Loading…
Siehe auch
- Ein Polyfill für
URLPattern
ist verfügbar auf GitHub