URLPattern:test() 方法

有限可用性

此功能不是基线功能,因为它在一些最广泛使用的浏览器中不起作用。

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

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

test() 方法是 URLPattern 接口的方法,它接受一个 URL 或 URL 部分的对象,并返回一个布尔值,指示给定的输入是否与当前模式匹配。

语法

js
test(input)
test(input, baseURL)

参数

input

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

baseURL 可选

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

返回值

一个boolean

示例

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

js
const pattern = new URLPattern("http{s}?://*.example.com/books/:id");

// Absolute URL strings
console.log(pattern.test("https://store.example.com/books/123")); // true
console.log(pattern.test("https://example.com/books/123")); // false

// Relative URL strings
console.log(pattern.test("/books/123", "http://store.example.com")); // true
console.log(pattern.test("/books/123", "data:text/plain,hello world!")); // false
console.log(pattern.test("/books/123")); // false

// Structured objects
console.log(
  pattern.test({
    pathname: "/books/123",
    baseURL: "http://store.example.com",
  }),
); // true
console.log(
  pattern.test({
    protocol: "https",
    hostname: "store.example.com",
    pathname: "/books/123",
  }),
); // true
console.log(
  pattern.test({
    protocol: "file",
    hostname: "store.example.com",
    pathname: "/books/123",
  }),
); // false

规范

规范
URL 模式标准
# dom-urlpattern-test

浏览器兼容性

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

另请参阅

  • URLPattern 的 polyfill 可在 GitHub 上获得。