匹配含%且在?前或无?的URI正则表达式需求
正则表达式解决方案:匹配查询参数前含%的URI
需求回顾
需要匹配满足以下条件的URI:
- URI包含
%字符 %要么出现在查询参数分隔符?之前,要么URI本身没有?- 若
%仅出现在?之后,则不匹配
最终正则表达式
^[^?]*%.*(?:\?.*)?$
正则拆解
^:匹配字符串起始位置[^?]*:匹配任意数量的非?字符,确保后续的%出现在?之前(如果存在?的话)%:匹配目标字符%,这是核心匹配条件之一.*:匹配%之后的任意字符(包括路径剩余部分)(?:\?.*)?:可选的非捕获组,匹配?及后续的查询参数部分(允许存在,但不影响核心匹配逻辑)$:匹配字符串结束位置
匹配验证
- 不匹配的URI:
/apps/jackson/maybe:无%字符,不符合匹配条件/things/halt_something/another?somevar=guay%2:%仅出现在?之后,不满足要求
- 匹配的URI:
/notes/hereitis%there/hack:无?且包含%,符合条件apps/files_pdfvi%ewer/yeah?othervar=guay%3:%出现在?之前,符合条件
内容的提问来源于stack exchange,提问作者feanorknd
相关产品推荐
相关产品推荐

