• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<div id="pageData-name" class="pageData">Match Patterns</div>
2
3<p>
4<a href="content_scripts.html">Content scripts</a> operate on
5a set of URLs defined by match patterns.
6You can put one or more match patterns
7in the <code>"matches"</code> part of
8a content script's section of the manifest.
9This page describes the match pattern syntax &mdash;
10the rules you need to follow when you specify
11which URLs your content script affects.
12</p>
13
14<p>
15A match pattern is essentially a URL
16that begins with a permitted scheme (<code>http</code>,
17<code>https</code>, <code>file</code>, or <code>ftp</code>),
18and that can contain '<code>*</code>' characters.
19The special pattern
20<code>&lt;all_urls&gt;</code> matches any URL
21that starts with a permitted scheme.
22Each match pattern has 3 parts:</p>
23</p>
24
25<ul>
26  <li> <em>scheme</em> &mdash;
27    for example, <code>http</code> or <code>file</code>
28    or <code>*</code>
29    <p class="note">
30    <b>Note:</b>
31    Access to <code>file</code> URLs isn't automatic.
32    The user must visit the extensions management page
33    and opt in to <code>file</code> access for each extension that requests it.
34    </p>
35  </li>
36  <li> <em>host</em> &mdash;
37    for example, <code>www.google.com</code>
38    or <code>*.google.com</code>
39    or <code>*</code>;
40    if the scheme is <code>file</code>,
41    there is no <em>host</em> part
42  </li>
43  <li> <em>path</em> &mdash;
44    for example, <code>/*</code>, <code>/foo* </code>,
45    or <code>/foo/bar </code>
46  </li>
47</ul>
48
49<p>Here's the basic syntax:</p>
50
51<pre>
52<em>&lt;url-pattern&gt;</em> := <em>&lt;scheme&gt;</em>://<em>&lt;host&gt;</em><em>&lt;path&gt;</em>
53<em>&lt;scheme&gt;</em> := '*' | 'http' | 'https' | 'file' | 'ftp'
54<em>&lt;host&gt;</em> := '*' | '*.' <em>&lt;any char except '/' and '*'&gt;</em>+
55<em>&lt;path&gt;</em> := '/' <em>&lt;any chars&gt;</em>
56</pre>
57
58<p>
59The meaning of '<code>*</code>' depends on whether
60it's in the <em>scheme</em>, <em>host</em>, or <em>path</em> part.
61If the <em>scheme</em> is <code>*</code>,
62then it matches either <code>http</code> or <code>https</code>.
63If the <em>host</em> is just <code>*</code>,
64then it matches any host.
65If the <em>host</em> is <code>*.<em>hostname</em></code>,
66then it matches the specified host or any of its subdomains.
67In the <em>path</em> section,
68each '<code>*</code>' matches 0 or more characters.
69The following table shows some valid patterns.
70</p>
71
72<table class="columns">
73<tbody>
74<tr>
75  <th style="margin-left:0; padding-left:0">Pattern</th>
76  <th style="margin-left:0; padding-left:0">What it does</th>
77  <th style="margin-left:0; padding-left:0">Examples of matching URLs</th>
78</tr>
79
80<tr>
81  <td>
82    <code>http://*/*</code>
83  </td>
84
85  <td>Matches any URL that uses the <code>http</code> scheme</td>
86
87  <td>
88    http://www.google.com/<br>
89    http://example.org/foo/bar.html
90  </td>
91</tr>
92
93<tr>
94  <td>
95    <code>http://*/foo*</code>
96  </td>
97
98  <td>
99    Matches any URL that uses the <code>http</code> scheme, on any host,
100    as long as the path starts with <code>/foo</code>
101  </td>
102
103  <td>
104    http://example.com/foo/bar.html<br>
105    http://www.google.com/foo<b></b>
106  </td>
107</tr>
108
109<tr>
110  <td>
111    <code>https://*.google.com/foo*bar </code>
112  </td>
113
114  <td>
115    Matches any URL that uses the <code>https</code> scheme,
116    is on a google.com host
117    (such as www.google.com, docs.google.com, or google.com),
118    as long as the path starts with <code>/foo</code>
119    and ends with <code>bar</code>
120  </td>
121
122  <td>
123    http://www.google.com/foo/baz/bar<br>
124    http://docs.google.com/foobar
125  </td>
126</tr>
127
128<tr>
129  <td>
130    <code>http://example.org/foo/bar.html </code>
131  </td>
132
133  <td>Matches the specified URL</td>
134
135  <td>
136    http://example.org/foo/bar.html
137  </td>
138</tr>
139
140<tr>
141  <td>
142    <code>file:///foo*</code>
143  </td>
144
145  <td>Matches any local file whose path starts with <code>/foo</code>
146  </td>
147
148  <td>
149    file:///foo/bar.html<br>
150    file:///foo
151  </td>
152</tr>
153
154<tr>
155  <td>
156    <code>http://127.0.0.1/*</code>
157  </td>
158
159  <td>
160    Matches any URL that uses the <code>http</code> scheme
161    and is on the host 127.0.0.1
162  </td>
163  <td>
164    http://127.0.0.1/<br>
165    http://127.0.0.1/foo/bar.html
166  </td>
167</tr>
168
169<tr>
170  <td>
171    <code>*://mail.google.com/* </code>
172  </td>
173
174  <td>
175    Matches any URL that starts with
176    <code>http://mail.google.com</code> or
177    <code>https://mail.google.com</code>.
178  </td>
179
180  <td>
181    http://mail.google.com/foo/baz/bar<br>
182    https://mail.google.com/foobar
183  </td>
184</tr>
185
186<tr>
187  <td>
188    <code>&lt;all_urls&gt;</code>
189  </td>
190
191  <td>
192    Matches any URL that uses a permitted scheme.
193    (See the beginning of this section for the list of permitted
194    schemes.)
195  </td>
196  <td>
197    http://example.org/foo/bar.html<br>
198    file:///bar/baz.html
199  </td>
200</tr>
201</tbody>
202</table>
203
204<p>
205Here are some examples of <em>invalid</em> pattern matches:
206</p>
207
208<table class="columns">
209<tbody>
210<tr>
211  <th style="margin-left:0; padding-left:0">Bad pattern</th>
212  <th style="margin-left:0; padding-left:0">Why it's bad</th>
213</tr>
214
215<tr>
216  <td><code>http://www.google.com</code></td>
217  <td>No <em>path</em></td>
218</tr>
219
220<tr>
221  <td><code>http://*foo/bar</code></td>
222  <td>'*' in the <em>host</em> can be followed only by a '.' or '/'</td>
223</tr>
224
225<tr>
226  <td><code>http://foo.*.bar/baz&nbsp; </code></td>
227  <td>If '*' is in the <em>host</em>, it must be the first character</td>
228  </tr>
229
230<tr>
231  <td><code>http:/bar</code></td>
232  <td>Missing <em>scheme</em> separator ("/" should be "//")</td>
233</tr>
234
235<tr>
236  <td><code>foo://*</code></td>
237  <td>Invalid <em>scheme</em></td>
238</tr>
239</tbody>
240</table>
241
242