マッチパターン

マッチパターンは URL のグループを指定する方法です。マッチパターンはいくつかの URL にマッチします。マッチパターンは WebExtensions API を使う拡張機能向けに、いくつかの場所で使用されます。特にコンテンツスクリプトをロードする文書を指定するときや、webRequest リスナーを追加する URL を指定する時に使用します。

マッチパターンを使用する API は通常マッチパターンのリストを受け取り、もし URL がパターンのいずれかにマッチしているなら適切に実行されます。たとえば manifest.json 内の content_scripts キーを参照してください。

マッチパターンの構造

記: ブラウザーによってはサポートしていないスキームがあります。
詳しくはブラウザー互換性テーブルを見てください。

すべてのマッチパターンは文字列で指定します。特別な値 <all_urls> を除き、マッチパターンは3つの部分から成り立っています。 scheme, host, path です。 Scheme と Host の間は  :// で句切られます。

<scheme>://<host><path>

scheme

 scheme 部は2つの form のうち、どちらかを指定します。

Form マッチするもの
* "http"か"https"のみ、いくつかのブラウザーでは "ws" と "wss"
http, https, ws, wss, ftp, ftps, data, file のうちどれか 1 つ 指定したスキームのみ

host

host部は3つのうちどれか 1 つを取ります。

Form マッチするもの
* すべてのホスト
*. に続くホスト名の一部分 ホスト名は指定されていますが、サブドメインはなんでもいいです。
ワイルドカード無しの完全なホスト名 そのホストのみ

host部にはポート番号は入りません。

"file"スキームだけは、host部はオプションです。

ワイルドカード "*" は host の最初のみに適用できることに注意してください。

path

パス部は / で開始しなければいけません。

その後、ワイルドカード * と、URL パスとして許可される文字とを組み合わせたものが続けて入るかもしれません。ホスト部と異なり、パス部はワイルドカード * を途中や終わりに含むことができて、さらに 2 つ以上の * を含められます。

path の値は URL パスに加えて URL クエリーストリングにもマッチします。クエリーストリングがある場合、それらの間に ? を含んでいます。例えば、foo.bar で終わる URL パスのあらゆるドメインに URL マッチしたい場合、マッチパターンは ['*://*/*foo.bar', '*://*/*foo.bar?*']です。単に bar* ではなく ?* は必要で、最後の * は URL クエリーストリングにも、URL パスの部分でないものにも適用するためです。

URL フラグメント識別子や、# の後についているものは、path とみなされません。

: path パターン文字列にはポート番号は入りません。"http://localhost:1234/*" のようにポート番号を追加するとマッチパターンは無視されます。しかし、"http://localhost:1234" は "http://localhost/*" にマッチします。

<all_urls>

特殊な値である <all_urls> は、サポートしているすべての Scheme の URL( "http", "https", "file", "ftp", "app" )にマッチします。

パターン マッチする例 マッチしない例

<all_urls>

すべての URL にマッチ

http://example.org/

https://a.org/some/path/

ws://sockets.somewhere.org/

wss://ws.example.com/stuff/

ftp://files.somewhere.org/

ftps://files.somewhere.org/

resource://a/b/c/
(サポートされていないスキーム)

*://*/*

すべての HTTP, HTTPS, WebSocket URL にマッチ

http://example.org/

https://a.org/some/path/

ws://sockets.somewhere.org/

wss://ws.example.com/stuff/

ftp://ftp.example.org/
(マッチしないスキーム)

ftps://ftp.example.org/
(マッチしないスキーム)

file:///a/
(マッチしないスキーム)

*://*.mozilla.org/*

"mozilla.org" かそのサブドメインでホストされている HTTP と HTTPS の URL にマッチ

http://mozilla.org/

https://mozilla.org/

http://a.mozilla.org/

http://a.b.mozilla.org/

https://b.mozilla.org/path/

ws://ws.mozilla.org/

wss://secure.mozilla.org/something

ftp://mozilla.org/
(マッチしないスキーム)

http://mozilla.com/
(マッチしないホスト)

http://firefox.org/
(マッチしないホスト)

*://mozilla.org/

HTTP や HTTPS や WebSocket の"mozilla.org/"のホストのみマッチ

http://mozilla.org/

https://mozilla.org/

ws://mozilla.org/

wss://mozilla.org/

ftp://mozilla.org/
(マッチしないスキーム)

http://a.mozilla.org/
(マッチしないホスト)

http://mozilla.org/a
(マッチしないパス)

ftp://mozilla.org/

"ftp://mozilla.org/"のみマッチ

ftp://mozilla.org

http://mozilla.org/
(マッチしないスキーム)

ftp://sub.mozilla.org/
(マッチしないホスト)

ftp://mozilla.org/path
(マッチしないパス)

https://*/path

 HTTPS URL で path が "path"のホストのみマッチ

https://mozilla.org/path

https://a.mozilla.org/path

https://something.com/path

http://mozilla.org/path
(マッチしないスキーム)

https://mozilla.org/path/
(マッチしないパス)

https://mozilla.org/a
(マッチしないパス)

https://mozilla.org/
(マッチしないパス)

https://mozilla.org/path?foo=1
(URL クエリーストリングによりマッチしないパス)

https://*/path/

あらゆるホスト上の HTTPS URL で、パスが "path/" で URL にクエリーストリングのないものにマッチ

https://mozilla.org/path/

https://a.mozilla.org/path/

https://something.com/path/

http://mozilla.org/path/
(マッチしないスキーム)

https://mozilla.org/path
(マッチしないパス)

https://mozilla.org/a
(マッチしないパス)

https://mozilla.org/
(マッチしないパス)

https://mozilla.org/path?foo=1
(URL クエリーストリングによりマッチしないパス)

https://mozilla.org/*

HTTPS URL のみにマッチで、"mozilla.org"だけ、パスやクエリーストリングは問わない

https://mozilla.org/

https://mozilla.org/path

https://mozilla.org/another

https://mozilla.org/path/to/doc

https://mozilla.org/path/to/doc?foo=1

http://mozilla.org/path
(マッチしないスキーム)

https://mozilla.com/path
(マッチしないホスト)

https://mozilla.org/a/b/c/

この URL (フラグメント付きも) のみマッチ

https://mozilla.org/a/b/c/

https://mozilla.org/a/b/c/#section1

これ以外のすべて

https://mozilla.org/*/b/*/

"mozilla.org"でホストされた HTTPS URL で、パスは中間のどこかに "b" を含むもの。クエリーストリングが / で終了していればそれにもマッチ

https://mozilla.org/a/b/c/

https://mozilla.org/d/b/f/

https://mozilla.org/a/b/c/d/

https://mozilla.org/a/b/c/d/#section1

https://mozilla.org/a/b/c/d/?foo=/

https://mozilla.org/a?foo=21314&bar=/b/&extra=c/

https://mozilla.org/b/*/
(マッチしないパス)

https://mozilla.org/a/b/
(マッチしないパス)

https://mozilla.org/a/b/c/d/?foo=bar
(URL クエリーストリングによりマッチしないパス)

file:///blah/*

FILE URL でパスが "blah" で始まるもの

file:///blah/

file://blah/bleh

file:///bleh/
(マッチしないパス)

無効なマッチパターン

無効なパターン 理由
resource://path/ サポートされていないスキーム。
https://mozilla.org パスがない。
https://mozilla.*.org/ "*" はホストの先頭に使用する必要があります。
https://*zilla.org/ ホスト内の "*" は唯一の文字であるか、"."が続かなければいけません。
http*://mozilla.org/

スキーム内の "*" は唯一の文字であるべきです。

*://* パスが空: "*://*/*"であるべき。
file://* パスが空: "file:///*"であるべき 。

ブラウザー実装状況

scheme

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxOperaAndroid 版 Firefox
Wildcard * schemeChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
* matches ws and wssChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 55Opera 未対応 なしFirefox Android 完全対応 55
httpChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
httpsChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
wsChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 55Opera 未対応 なしFirefox Android 完全対応 55
wssChrome 未対応 なしEdge 未対応 なしFirefox 完全対応 55Opera 未対応 なしFirefox Android 完全対応 55
ftpChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
ftpsChrome 未対応 なしEdge 未対応 なしFirefox 未対応 なし
補足
未対応 なし
補足
補足 See bug 1463440
Opera 未対応 なしFirefox Android 未対応 なし
補足
未対応 なし
補足
補足 See bug 1463440
fileChrome 完全対応 ありEdge 完全対応 14Firefox 完全対応 48Opera 完全対応 ありFirefox Android 完全対応 48
dataChrome 未対応 なしEdge 未対応 なしFirefox 部分対応 48
補足
部分対応 48
補足
補足 Doesn't support injection of content scripts or stylesheets.
Opera 未対応 なしFirefox Android 部分対応 48
補足
部分対応 48
補足
補足 Doesn't support injection of content scripts or stylesheets.

凡例

完全対応  
完全対応
部分対応  
部分対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。