主要Web浏览器(包括Web引擎)使用的PAC约定使用修改后的正则表达式语法。到目前为止,pacmanager使用普通正则表达式进行匹配。我们正在更改 shExpMatch 功能,以使用与浏览器类似的匹配功能。

此更改意味着RoomOS将使用与网络中的其他WEB客户端相同的PAC文件。专门为RoomOS编写的PAC文件可能需要更新以保持按预期运行。

PAC文件评估在RoomOS软件中的两个独立位置进行:

  • 用于自己的流量的Web引擎。

  • 针对所有其他的HTTP流量的Pacmanager:HttpFeedback、Webex配置、呼叫信号等。

PAC文件可以使用以下功能:shExpMatch(字符串、模式)

如果字符串与模式相符,则返回true,否则false。

下面列出了两个约定之间的主要差异,“REGEX”指传统正则表达式,“BROWSER”指网络浏览器约定。

点号,“。”

  • REGEX: 。匹配一个字符,可以用量器重复此字符

  • 浏览器:。仅匹配一个字面点字符

明星,“*”:

  • REGEX: *是项后的零或更多量化器,但本身不匹配任何项

  • 浏览器: *匹配零或更多字符

问号“?”:

  • REGEX: ?是项后的零或一量化器,或者可以修改*量化器为非贪婪,但本身不匹配任何东西

  • 浏览器: ?匹配一个字符

整个表达式是否必须匹配:

  • Regex:不使用leading ^和trailing $,模式不需要匹配整个字符串:字符串包含一个匹配的子字符串就足够了。

  • 浏览器:始终要求字符串完全按照模式匹配

示例

我们希望在“provider.domain”(provider.domain)、“provider.domain.tld”或“providersdomain”(providersdomain)下匹配所有主机名:

Regex:

 shExpMatch(url, “^。*\\。provider\\。domain$”) 

浏览器:

 shExpMatch(url, “*。provider.domain”) 

我们希望匹配“proxy1.domain”、“proxy2.domain”等,但不匹配“proxytest.domain”:

Regex:

 shExpMatch(url, "^proxy.\\。domain$") 

浏览器:

 shExpMatch(url, “proxy?。domain”) 

其他资源

有关PAC文件格式的更多详细信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file