URLPattern: exec() 方法
注意: 此功能在 Web Workers 中可用。
exec()
方法是 URLPattern
接口的一部分,它接受一个 URL 或 URL 部件的对象,并返回一个包含将 URL 与模式匹配的结果的对象,或者如果 URL 与模式不匹配则返回 null
。
语法
js
exec(input)
exec(input, baseURL)
参数
返回值
一个 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 上获得