RegEx URL匹配问题:需排除主机名后首个/后接?的场景
正则表达式URL匹配修正方案
你的核心需求是排除/语言/?param这类直接在语言路径后加参数的情况,同时保留其他包含路径段的URL匹配。针对JS正则(无需转义\的变体),可以使用以下正则表达式:
^/(solutions|solucoes|soluciones|oplossingen|losungen)/[^/?]+(?:/[^/?]+)*(?:/?(?:\?.*)?)$
正则拆解说明
^/(solutions|solucoes|soluciones|oplossingen|losungen)/:匹配开头的多语言路径前缀[^/?]+:强制匹配至少一个非/、非?的字符,确保语言路径后不是直接跟参数,排除/?param的情况(?:/[^/?]+)*:支持多级路径(比如/test/testb),非捕获组避免生成额外匹配结果(?:/?(?:\?.*)?)$:允许路径结尾带/,同时支持后续的任意参数,匹配到字符串结束
匹配验证
匹配成功的URL:
/solutions/test/solutions/test//solutions/test?param/solutions/test/?param/solutions/test/testb/solutions/test/testb//solutions/test/testb/?param/solutions/test/testb?param
匹配失败的URL(符合需求):
/solutions/solutions//solutions?/solutions/?param
内容的提问来源于stack exchange,提问作者BackCountry55
相关产品推荐
相关产品推荐

