地址与路由规则

URLPattern 测试找出没有匹配的那一段

每行输入一个 URL,用同一模式批量测试;在下方选择 URLPattern 或仅检查路径的路由适配器。

URLPattern 测试

匹配模式

候选 URL

地址和模式只在当前浏览器计算,不请求输入的 URL。

匹配结果

请至少输入一条候选 URL。

匹配选项

URLPattern:* 匹配任意值,空字段只匹配空组件。组件明细可显示局部捕获,整条地址仍可能不匹配。

基础地址用于解析相对候选和相对字符串模式,不给组件模式增加条件。

限制:模式/组件 512、URL 200 条、单地址及基础地址 2,048、总输入 131,072 个 UTF-16 代码单元;线程预算 2 秒。

结果已过期或正在计算。

同一个路径,换了域名、加上尾斜杠或带入编码参数,结果就可能不同。URLPattern 测试把预期命中与预期失败的样本放在一起,让你改一个条件就能看到差异,避免只拿一条成功地址判断规则可用。

URL 模式匹配关注地址的不同组件,框架路由通常只检查路径。这里分别调用真实引擎,并保留原始输入与规范化地址;匹配成功只证明字符串符合当前规则,不代表接口存在或服务器会选择某个处理函数。

为什么用 URLPattern 测试

整体失败,也能看清哪一段成功

URLPattern 测试把整条地址结果与八个组件的独立诊断分开。域名不符时,路径仍可能捕获 id;展开明细就能看见。局部捕获只作为诊断,不会冒充整条 URLPattern exec 成功返回的命名捕获组。

一个模式连接到三行地址样本,中间一行只有一个组件标记为失败。

观察主机条件是否参与

组件模式中的 hostname 可以限制主机。切换路径引擎后,只要 pathname 相同,不同主机上的地址也可能命中。将这两条样本一起保留,能够核对你需要的是完整地址约束还是路径规则。

两组相同地址样本:完整地址匹配排除不同主机,路径匹配接受相同路径。

先选语法,再判断结果

01

空字段与星号含义不同

默认八个字段都显式传给引擎。* 表示允许任意值,清空则要求该组件为空。基础地址在组件模式下只负责解析候选,不会自动给模式补上协议或主机限制。

02

框架入口要看版本

路径适配器采用 path-to-regexp v8,对应 Express 5 路径语法。可选段使用花括号,通配符需要名字;完整匹配、尾斜杠和参数解码可以分别调整。切换入口保留已有输入,不自动改写语法。

03

等结果更新再导出

自动测试在停止编辑 350 ms 后运行。关闭后使用按钮或 Ctrl/Cmd + Enter;输入一变,旧报告立即禁止复制和下载。展开失败行的组件明细,确认当前结果后再保存。

从完整地址追到具体组件

版本固定,结果可复查

URLPattern 测试使用 urlpattern-polyfill 10.1.0 和 path-to-regexp 8.4.2。报告保留引擎版本、选项和原始输入;所有浏览器使用相同 polyfill,因此这里并不检测浏览器原生实现的差异。

捕获值不强行统一

URLPattern 结果按组件保存,保留百分号编码,未出现的可选捕获导出为 null。路径引擎默认解码参数,具名通配符可返回数组;关闭解码后则保留原始编码字符串。

把解析与匹配分清

相对样本会先按基础地址解析。报告同时保存输入与实际地址,能看见默认端口消失、域名大小写规范化和点路径消解。基础地址的变化可以在模式未改时改变测试对象。

错误行也属于报告

无效 URL 和解码错误保留原始行号,其他样本继续测试。模式编译失败则停止整次运行。结果先显示 50 行,可继续展开;导出的 JSON 包含全部样本及失败项,不随页面分页截断。

输入、引擎与执行边界

两套语法不能直接互换
URLPattern 支持 :id? 和 :id(\d+) 这类规则;路径库 v8 用花括号表示可选部分,以 *path 表示具名通配符。旧版框架语法可能直接编译失败,不能把这种错误当成普通未匹配。
查询串按顺序匹配
search 不含开头的问号,hash 不含开头的 #。查询参数不会排序,也不会转换成无序对象比较;a=1&b=2 与 b=2&a=1 是不同字符串。路径适配器不检查查询串、片段和主机。
规范化与解码是两步
地址解析会规范化域名、默认端口和点路径。URLPattern 捕获不额外解码;路径引擎默认对参数解码,遇到无效百分号编码会产生该行错误。关闭参数解码可查看原始编码值。
保留样本,不整理样本
真正的空行被跳过,重复项、空格和原始行号保留在报告中。拒绝控制字符与无效 Unicode。地址解析器可能处理首尾空格,因此原文与规范化结果会同时保留;不会自动排序或去重。
超过限额整次停止
单模式或单组件最多 512 个 UTF-16 代码单元,最多 200 条非空 URL,单地址及基础地址最多 2,048,总输入最多 131,072。后台线程超过 2 秒便终止,超限不返回部分成功报告。
不模拟服务器和其他框架
仅实现所列出的两个引擎,不运行 HTTP 方法判断、路由优先级、中间件或权限检查。不请求地址,不改写路径,不导入文件,也不保存历史或把样本写入分享链接。

URLPattern 测试常见问题

相对路径应该怎样设置基础地址?

候选 /users/42 会结合下方的基础地址解析;清空基础地址后,相对候选会报错。完整字符串模式也可使用基础地址构造相对模式。组件模式直接按八个字段构造,不会从基础地址继承主机条件。

路径末尾的斜杠会自动忽略吗?

URLPattern 不会自动补一个可选斜杠,/users/:id 不匹配 /users/42/。路径适配器默认允许尾斜杠,可以关闭该选项;两种引擎的默认行为应分别检查。

匹配区分大小写吗?

默认区分,可开启“忽略大小写”。但域名在地址解析阶段已被规范化,不能仅用域名大小写变化验证路径的大小写规则。请用 /users/42 与 /USERS/42 这类样本对照。

为什么有些组件会出现编号捕获组?

通配符本身会产生匿名捕获,例如 * 可能显示为编号 0。这里保留引擎返回的结构;即使捕获到空字符串,它也与不存在的可选捕获不同,后者在报告中记为 null。

能把查询参数当对象或映射进行匹配吗?

本页的 URLPattern test 按 search 字符串检查,不做对象、数组或映射等价比较。重复参数与参数顺序都可能影响结果;要忽略查询部分可把 search 设为 *,这与逐项核对参数含义不同。

有一条结果出乎意料?

用一组反例核对规则

保留一条应该命中的地址和一条应该失败的地址,每次只改变一个条件,检查组件明细后再导出。