URLPattern: метод exec()
Ограниченная доступность
Эта функция не является Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология .
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости браузеров .
Примечание: Эта функция доступна в Web Workers.
Метод exec() интерфейса URLPattern принимает URL или объект с частями URL и возвращает либо объект, содержащий результаты сопоставления URL с шаблоном, либо null если URL не соответствует шаблону.
Синтаксис
exec(input) exec(input, baseURL)
Параметры
input-
URL или части URL для сопоставления. Это может быть строка или объект, содержащий отдельные части URL. Члены объекта могут быть любыми из
protocol,username,password,hostname,port,pathname,search,hash, илиbaseURL. Пропущенные части в объекте будут интерпретированы как пустые строки. Если вход не может быть проанализирован или предоставлен относительный URL без базового URL, метод вернётnull. baseURLНеобязательно-
Строка, представляющая базовый URL, который используется в случае, когда
inputявляется относительным URL. Если не указано, по умолчанию используетсяundefined. Если этот параметр не может быть проанализирован, метод вернетnull.
Возвращаемое значение
Объект object с ключом inputs содержащим массив аргументов, переданных в функцию, и ключами для каждой из частей URL, содержащими соответствующий вход и соответствующие группы для этой части.
Примеры
В этом примере показано, как использовать метод exec() для сопоставления URL с шаблоном. Пример выводит результат вызовов exec() в консоль.
const pattern = new URLPattern("http{s}?://*.example.com/books/:id");
// Absolute URL strings
console.log(pattern.exec("https://example.com/books/123")); // null
let match = pattern.exec("https://store.example.com/books/123");
console.log(match.inputs); // ['https://store.example.com/books/123']
console.log(match.protocol); // { input: "https", groups: {} }
console.log(match.username); // { input: "", groups: {} }
console.log(match.password); // { input: "", groups: {} }
console.log(match.hostname); // { input: "store.example.com", groups: { "0": "store" } }
console.log(match.port); // { input: "", groups: {} }
console.log(match.pathname); // { input: "/books/123", groups: { "id": "123" } }
console.log(match.search); // { input: "", groups: {} }
console.log(match.hash); // { input: "", groups: {} }
// Relative URL strings
pattern.exec("/books/123", "http://store.example.com"); // returns object
pattern.exec("/books/123", "data:text/plain,hello world!"); // returns object
pattern.exec("/books/123"); // returns null
// Structured objects
pattern.exec({
pathname: "/books/123",
baseURL: "http://store.example.com",
}); // returns object
pattern.exec({
protocol: "https",
hostname: "store.example.com",
pathname: "/books/123",
}); // returns object
pattern.exec({
protocol: "file",
hostname: "store.example.com",
pathname: "/books/123",
}); // returns null
Спецификации
| Спецификация |
|---|
| URL Pattern # dom-urlpattern-exec |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
exec |
95 | 95 | Нет | 81 | Нет | 95 | Нет | 67 | Нет | 17.0 | 95 |
См. также
- Полифилл
URLPatternдоступен на GitHub
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/URLPattern/exec