Skip to content

kong0107/url-match-pattern

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URL Match Pattern

a JavaScript package handles match patterns described in browser extension

demo page

See articles on MDN and Chrome Developers.

Usage

/// check if a string is a valid URL match pattern
URLMatchPattern.test('*://github.com/'); // true

/// check if a string matches a URL match pattern
URLMatchPattern.test('*://*.google.com/*', 'https://google.com/search'); // true

/// get a RegExp object which represents a URL match pattern
const regexp = URLMatchPattern.toRegExp('*://*.name/');
regexp.test('https://domainA.name/'); // true
regexp.test('https://domainB.name/'); // true

/// or create an object with `test` method
const pattern = new URLMatchPattern('*://*.name/');
pattern.test('https://domainA.name/'); // true
pattern.test('https://domainB.name/'); // true

Note

Method test (both static and instance) allows url string:

  • with port
  • with hash
  • without path

However, that's not the case after converting to RegExp.

URLMatchPattern.test('*://*/', 'http://username:password@abc:666/#hash=hash?a'); // true
URLMatchPattern.test('*://*/', 'http://abc'); // true

const pattern = new URLMatchPattern('*://*/');
pattern.test('http://username:password@abc:666/#hash=hash?a'); // true
pattern.test('http://abc'); // true

/// converting to RegExp object would lose that compatibility for current version
const regexp = URLMatchPattern.toRegExp('*://*/');
regexp.test('http://abc/'); // true
regexp.test('http://abc:80/'); // false
regexp.test('http://abc/#foo'); // false
regexp.test('http://abc'); // false

Compatibility

Either browser supports http, https, and ftp.

scheme this project Firefox 55+ Chrome 91+ Edge, Opera Safari
ws, wss Yes Yes No No No
urn No No Yes No No
data No partial No No No
file Yes Yes Yes Yes No

Defects of URL Match Pattern

  • not well-defined
  • no escaping way for * in path
  • * in path also matches / and ?, which usually have special meaning.

About

a JavaScript package handles match patterns described in browser extension

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published