shExpMatch no PAC usa curingas, não expressões regulares
Uma regra de proxy pode parecer correta mas nunca corresponder, porque shExpMatch e as expressões regulares de JavaScript usam linguagens de padrão diferentes.
No PAC, shExpMatch usa curingas ao estilo da shell. Para subdomínios de example.com:
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}Use nos valores de retorno os endpoints HTTP escolhidos pela política; a lista de proxies HTTP fornece candidatos para rotas públicas permitidas. O asterisco corresponde a uma sequência de caracteres. Não é um operador de repetição de expressão regular, por isso um .*example.com com aparência de regex altera o significado.
Inclua o nome exato do pai explicitamente quando ele fizer parte da política:
if (host === "example.com" || shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}Usar *example.com no lugar também aceitaria nomes terminados nessas letras sem um ponto separador. Isso amplia o conjunto além do limite de domínio pretendido.
A base portátil de curingas do PAC inclui * e ?; as classes de caracteres variam conforme a implementação. Uma regex de JavaScript, em vez disso, usa test() e suas próprias regras de ancoragem e escape.
Combine com a entrada pretendida. host é um nome de host, enquanto url inclui um esquema e pode ter sido sanitizado. Uma regra de domínio não deve depender por acidente de um caminho que o navegador nunca fornece.