shExpMatch ใน PAC ใช้ไวลด์การ์ด ไม่ใช่นิพจน์ปกติ
กฎพร็อกซีอาจดูถูกต้องแต่ไม่เคยตรงกันเลย เพราะ shExpMatch กับนิพจน์ปกติของ JavaScript ใช้ภาษารูปแบบที่ต่างกัน
ใน PAC shExpMatch ใช้ไวลด์การ์ดแบบเชลล์ สำหรับซับโดเมนของ example.com:
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}ใช้ปลายทาง HTTP ที่นโยบายเลือกในค่าที่ส่งคืนเหล่านี้ รายการพร็อกซี HTTP ให้ผู้สมัครสำหรับเส้นทางสาธารณะที่ได้รับอนุญาต ดาวเทียบได้กับลำดับอักขระ ไม่ใช่ตัวดำเนินการซ้ำของนิพจน์ปกติ ดังนั้น .*example.com ที่ดูเหมือน regex จึงเปลี่ยนความหมาย
ใส่ชื่อพ่อแม่ที่แน่นอนอย่างชัดเจนเมื่อเป็นส่วนหนึ่งของนโยบาย:
if (host === "example.com" || shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}การใช้ *example.com แทนจะยอมรับชื่อที่ลงท้ายด้วยตัวอักษรเหล่านั้นโดยไม่มีจุดคั่นด้วย ซึ่งขยายชุดเกินขอบเขตโดเมนที่ตั้งใจ
พื้นฐานไวลด์การ์ด PAC ที่พกพาได้ รวม * และ ? คลาสอักขระแตกต่างกันตามการใช้งาน regex ของ JavaScript ใช้ test() และกฎการยึดและการหลบอักขระของตัวเองแทน
จับคู่กับอินพุตที่ตั้งใจ host เป็นชื่อโฮสต์ ส่วน url มีสคีมาและอาจถูกทำให้ปลอดภัยแล้ว กฎโดเมนไม่ควรขึ้นกับเส้นทางที่เบราว์เซอร์ไม่เคยให้โดยบังเอิญ