如何实现类似Vue/Angular/Symfony/Laravel的URL校验checkUrl函数
兼容多框架路由规则的URL匹配开源库方案
针对需要实现支持域名主机、访问路径校验,且匹配逻辑对齐Vue、Angular、Symfony、Laravel路由规则的checkUrl函数,可直接复用以下成熟开源库实现,无需从零编写匹配逻辑:
可选开源匹配库
path-to-regexp:Vue Router、Express的底层路由依赖库,规则行为与Symfony、Laravel的路径占位、通配逻辑完全对齐,支持将带:id参数占位符、**全路径通配符的模板编译为匹配正则,拆分主机段、路径段分别做校验即可实现精准匹配url-pattern:原生支持包含域名主机部分的完整URL模板匹配,参数占位符、递归通配符的行为与Angular、Laravel的路由规则完全一致,无需额外做URL拆分即可直接传入示例格式的模板完成校验route-recognizer:原生支持递归通配、命名参数的匹配逻辑,可同时校验域名主机、多级嵌套路径,匹配精度符合主流框架的路由判断标准
匹配效果对齐说明
基于以上任意一个库实现的checkUrl函数,都可以完全复现你预期的判断行为:
- 传入模板
myShop.com/product/:id时,仅会匹配同主机下单个路径层级带参数的地址,即示例里的myShop.com/product/pepsi - 传入带
/**后缀的模板时,会命中参数位置后续任意嵌套深度的子路径,例如myShop.com/product/pepsi下的所有多级路径、ozon.ru/product/pepsi下的所有多级路径都会被对应域名的模板精准匹配 - 匹配过程会严格校验域名主机,不会出现不同域名下路径匹配就误判通过的情况
内容的提问来源于stack exchange,提问作者Alexander Myravjev
相关产品推荐
相关产品推荐

