URLPattern: exec() 方法

有限可用性

此功能不是基线功能,因为它在一些最常用的浏览器中无法正常工作。

实验性: 这是一项 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

注意: 此功能在 Web Workers 中可用。

exec() 方法是 URLPattern 接口的一部分,它接受一个 URL 或 URL 部件的对象,并返回一个包含将 URL 与模式匹配的结果的对象,或者如果 URL 与模式不匹配则返回 null

语法

js
exec(input)
exec(input, baseURL)

参数

input

要匹配的 URL 或 URL 部件。这可以是一个字符串,也可以是一个提供单个 URL 部件的对象。对象成员可以是 protocolusernamepasswordhostnameportpathnamesearchhashbaseURL 中的任何一个。对象中省略的部件将被视为空字符串。如果输入无法解析,或者提供了没有基地址的相对 URL,则该方法将返回 null

baseURL 可选

表示基地址的字符串,在 input 为相对 URL 的情况下使用。如果未指定,则默认为 undefined。如果此参数无法解析,则该方法将返回 null

返回值

一个 object,其中包含一个 inputs 键,该键包含传递给函数的参数数组,以及每个 URL 部件的键,这些键包含匹配的输入,以及该部件的匹配组。

示例

此示例演示了如何使用 exec() 方法将 URL 与模式匹配。该示例将 exec() 调用的结果打印到控制台。

js
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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅

  • URLPattern 的 polyfill 可在 GitHub 上获得