URLPattern.exec()
The **exec()**method of the URLPattern interface takes a URL or object of URL parts, and returns either an object containing the results of matching the URL to the pattern, or null if the URL does not match the pattern.
Note: This feature is available in Web Workers
Syntax
exec(input); exec(input, baseURL);
Parameters
input-
The URL or URL parts to match against. This can either be a
USVString, or an object providing the individual URL parts. The object members can be any ofprotocol,username,password,hostname,port,pathname,search,hash, orbaseURL. Omitted parts in the object will be treated as empty strings. If the input cannot be parsed, or a relative URL without a base is provided, the method will returnnull. -
baseURLOptional -
A
USVStringrepresenting the base URL to use in cases whereinputis a relative URL. If not specified, it defaults toundefined. If this parameter cannot be parsed, the method will returnnull.
Return value
An object with an inputs key containing the array of arguments passed into the function, and keys for each of the URL parts containing the matched input, and matched groups for that part.
Examples
This example shows how to use the exec() method to match a URL against a pattern. The example prints the result of the exec() calls to the console.
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: { "1": "123" } } console.log(match.search); // { input: "", groups: {} } console.log(match.hash); // { input: "", groups: {} } // Relative URL strings pattern.test('/books/123', 'http://store.example.com'); // returns object pattern.test('/books/123', 'data:text/plain,hello world!'); // returns object pattern.test('/books/123'); // returns null // Structured objects pattern.test({ pathname: '/books/123', baseURL: 'http://store.example.com', }); // returns object pattern.test({ protocol: 'https', hostname: 'store.example.com', pathname: '/books/123', }); // returns object pattern.test({ protocol: 'file', hostname: 'store.example.com', pathname: '/books/123', }); // returns null
Specifications
| Specification |
|---|
| URLPattern API # dom-urlpattern-exec |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
exec |
95
93-95
|
95
93-95
|
No |
No |
81 |
No |
No |
95
93-95
|
No |
No |
No |
No |
See also
- A polyfill of
URLPatternis available on GitHub
© 2005–2021 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