This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/match_patterns.html
Title: 匹配表达式 - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 22984

匹配表达式

主机权限内容脚本的匹配基于匹配表达式定义的一组 URL。匹配表达式本质上就是以允许的协议(httphttpsfileftp)开头,并且可以包含星号(“*”)的 URL。特殊的表达式 <all_urls> 匹配以允许的协议开头的任何 URL。每一个匹配表达式包含三部分:

如下是基本语法:

<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'chrome-extension'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>

星号(“*”)的意义取决于它在协议主机还是路径中。如果协议*,则可以匹配 httphttps,但不包括 fileftpchrome-extension。如果主机*,则匹配任何主机。如果主机*.hostname,则匹配指定主机或者任何子域名。在路径部分,每一个 “*” 匹配 0 个或多个字符。下表展示了一些有效的表达式。

表达式 含义 匹配 URL 的例子
http://*/* 匹配使用 http 协议的任意 URL http://www.google.com/
http://example.org/foo/bar.html
http://*/foo* 匹配使用 http 协议、任意主机、路径以 /foo 开头的任意 URL。 http://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*bar 匹配使用 https 协议、在 google.com 主机上(例如 www.google.com、docs.google.com 或 google.com)、并且路径以 /foo 开头、以 bar 结尾的任意 URL。 http://www.google.com/foo/baz/bar
http://docs.google.com/foobar
http://example.org/foo/bar.html 匹配指定 URL。 http://example.org/foo/bar.html
file:///foo* 匹配路径以 /foo 开头的所有本地文件。 file:///foo/bar.html
file:///foo
http://127.0.0.1/* 匹配使用 http 协议、主机为 127.0.0.1 的任意 URL。 http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/* 匹配以 http://mail.google.com https://mail.google.com 开头的任意 URL。 http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
chrome-extension://*/* 匹配指向扩展程序的任意 URL(第一个 * 代表扩展程序标识符的过滤器,第二个用于路径)。 chrome-extension://askla...asdf/options.html
<all_urls> 匹配使用允许协议的任何 URL(有关允许的协议列表,请参见这一部分的开头)。 http://example.org/foo/bar.html
file:///bar/baz.html

如下是一些无效的匹配表达式的例子:

无效的表达式 原因
http://www.google.com 没有路径
http://*foo/bar 主机部分的“*”必须在“.”或“/”前面
http://foo.*.bar/baz  如果“*”在主机中,它必须是第一个字符
http:/bar 缺少协议分隔符(“/”应该为“//”)
foo://* 无效的协议

某些协议不一定在所有上下文中都支持。