URLPattern: конструктор URLPattern()
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная функция: Это экспериментальная технология
Перед использованием в рабочей среде внимательно ознакомьтесь с таблицей совместимости браузеров.
Примечание: Эта функция доступна в Web Workers.
Конструктор URLPattern() возвращает новый объект URLPattern, представляющий шаблон URL, определённый параметрами.
Синтаксис
new URLPattern(input) new URLPattern(input, baseURL) new URLPattern(input, options) new URLPattern(input, baseURL, options)
Параметры
input-
Входной шаблон, который будет использоваться для сопоставления. Это может быть строка или объект, предоставляющий шаблоны для каждой части URL индивидуально. Члены объекта могут быть следующими:
protocolusernamepasswordhostnameportpathnamesearchhashbaseURL
Примечание: Пропущенные части объекта будут обрабатываться как подстановочные знаки (
*). baseURLНеобязательный-
Строка, представляющая базовый URL, который используется в случаях, когда
inputявляется относительным шаблоном. Если не указано, по умолчанию используетсяundefined. optionsНеобязательный-
Объект, предоставляющий параметры для сопоставления заданного шаблона. Возможные члены объекта:
ignoreCaseНеобязательный-
Включает регистронезависимое сопоставление, если значение равно
true. Если опущен или установлен вfalse, сопоставление будет регистрозависимым.
Исключения
TypeError-
Указывает на следующее:
- Указанный
inputилиbaseURLнедействителен или синтаксически неверен. - Указанный
inputотносительный, но не предоставленbaseURLдля формирования полного абсолютного URL. - Предоставлен
baseURL, а входной шаблон – абсолютный или структурированный объект.
- Указанный
Примеры
Сопоставление пути
let pattern1 = new URLPattern("https://example.com/books/:id");
// same as
let pattern2 = new URLPattern("/books/:id", "https://example.com");
// or
let pattern3 = new URLPattern({
protocol: "https",
hostname: "example.com",
pathname: "/books/:id",
});
// or
let pattern4 = new URLPattern({
pathname: "/books/:id",
baseURL: "https://example.com",
});
Сопоставление протокола и домена
let pattern = new URLPattern({
protocol: "http{s}?",
hostname: ":subdomain.example.com",
});
Сопоставление всех возможных структурированных частей
let pattern = new URLPattern({
protocol: "http{s}?",
username: ":username",
password: ":password",
hostname: ":subdomain.example.com",
port: ":port(80|443)",
pathname: "/:path",
search: "*",
hash: "*",
});
Регистронезависимое сопоставление
// Case-sensitive matching by default
const pattern = new URLPattern("https://example.com/2022/feb/*");
console.log(pattern.test("https://example.com/2022/feb/xc44rsz")); // true
console.log(pattern.test("https://example.com/2022/Feb/xc44rsz")); // false
Установка параметра ignoreCase в true в конструкторе переключает все операции сопоставления на регистронезависимое для заданного шаблона:
// Case-insensitive matching
const pattern = new URLPattern("https://example.com/2022/feb/*", {
ignoreCase: true,
});
console.log(pattern.test("https://example.com/2022/feb/xc44rsz")); // true
console.log(pattern.test("https://example.com/2022/Feb/xc44rsz")); // true
Примечания по использованию
Входной шаблон конструктора URLPattern может иметь две формы — объект шаблона или строка шаблона и необязательный baseURL.
new URLPattern(obj); new URLPattern(pattern); new URLPattern(pattern, baseURL);
Первый тип конструктора принимает объект, описывающий URL, которые должны быть сопоставлены путём задания шаблонов для каждой отдельной части URL. Его члены могут быть protocol, username, password, hostname, port, pathname, search, hash или baseURL. Если свойство baseURL предоставлено, оно будет обработано как URL и использовано для заполнения любых отсутствующих свойств. Если свойство baseURL отсутствует, любые другие отсутствующие свойства по умолчанию будут подстановочным знаком *, принимающим любой ввод.
Второй тип конструктора принимает строку URL, содержащую встроенные в неё шаблоны. Строка URL может быть относительной, если baseURL предоставлена как второй аргумент. Обратите внимание, что может потребоваться экранировать некоторые символы в строке URL, если неясно, является ли символ разделителем различных компонентов URL или частью шаблона. Например, необходимо написать about\\:blank для указания того, что : – это суффикс протокола, а не начало шаблона именованной группы :blank.
Спецификации
| Спецификация |
|---|
| Шаблон URL # dom-urlpattern-urlpattern |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
URLPattern |
95 | 95 | Нет | 81 | Нет | 95 | Нет | 67 | Нет | 17.0 | 95 |
ignoreCase_option |
107 | 107 | Нет | 93 | Нет | 107 | Нет | 73 | Нет | 21.0 | 107 |
См. также
- Полифил
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/URLPattern