如何编写正则精确匹配忽略查询字符串的指定根路径URL
正确正则实现
直接使用以下正则即可满足需求:
^https:\/\/example\.com\/(?=\?|$)
原正则失效原因
你之前使用的https:\/\/www\.example\.com\/[^?]*存在两个核心问题:
- 额外加入了
www.前缀匹配规则,和你指定的目标域名https://example.com/不匹配 - 后缀部分
[^?]*会匹配斜杠后所有非?的字符,会把/something这类非根路径内容也纳入匹配范围,导致误命中非根路径URL
匹配规则验证
- 正常命中场景:
https://example.com/:纯根路径无参数,命中https://example.com/?abc:根路径携带查询参数,命中https://example.com/?a=1&b=2:根路径携带多组查询参数,命中
- 不会命中场景:
https://example.com/something:存在非根路径内容,不命中https://example.com/something?abc=123:非根路径携带参数,不命中https://www.example.com/:域名带www前缀,不命中http://example.com/:协议为http,不命中
如果需要同时兼容匹配带
www.前缀的根路径地址,可将正则调整为^https:\/\/(www\.)?example\.com\/(?=\?|$)
内容的提问来源于stack exchange,提问作者Alex S
相关产品推荐
相关产品推荐

