<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 a permitted scheme (<code>http</code>, <code>https</code>, <code>file</code>, or <code>ftp</code>), and that can contain '<code>*</code>' characters. The special pattern <code><all_urls></code> matches any URL that starts with a permitted scheme. Each match pattern has 3 parts:</p> </p> <ul> <li> <em>scheme</em> — for example, <code>http</code> or <code>file</code> or <code>*</code> <p class="note"> <b>Note:</b> Access to <code>file</code> URLs isn't automatic. The user must visit the extensions management page and opt in to <code>file</code> access for each extension that requests it. </p> </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> <em><scheme></em> := '*' | 'http' | 'https' | 'file' | 'ftp' <em><host></em> := '*' | '*.' <em><any char except '/' and '*'></em>+ <em><path></em> := '/' <em><any chars></em> </pre> <p> The meaning of '<code>*</code>' depends on whether it's in the <em>scheme</em>, <em>host</em>, or <em>path</em> part. If the <em>scheme</em> is <code>*</code>, then it matches either <code>http</code> or <code>https</code>. 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> <tr> <td> <code>*://mail.google.com/* </code> </td> <td> Matches any URL that starts with <code>http://mail.google.com</code> or <code>https://mail.google.com</code>. </td> <td> http://mail.google.com/foo/baz/bar<br> https://mail.google.com/foobar </td> </tr> <tr> <td> <code><all_urls></code> </td> <td> Matches any URL that uses a permitted scheme. (See the beginning of this section for the list of permitted schemes.) </td> <td> http://example.org/foo/bar.html<br> file:///bar/baz.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://www.google.com</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>