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