如何编写正则表达式匹配指定分段的URL路径?
解决方案:精准匹配目标URL路径的正则表达式
先明确我们要覆盖的匹配范围与排除规则:
- 需要匹配的路径:
/v1/users/xxx/yyy/(xxx、yyy为任意非斜杠字符的参数)/v1/users/xxx/me/(第二段固定为me的路径)
- 需要排除的路径:
- 仅固定分段或单参数的短路径(比如
/v1/users/、/v1/users/xxx/) - 包含三段及以上参数的长路径(比如
/v1/users/xxx/yyy/zzz/、/v1/users/xxx/me/yyy/)
- 仅固定分段或单参数的短路径(比如
直接使用以下正则即可满足需求:
^/v1/users/[^/]+/(?:me|[^/]+)/$
正则规则拆解:
^和$:锚定字符串的开头与结尾,彻底杜绝匹配更长或更短的路径/v1/users/:固定匹配前缀路径,确保只针对该特定URL分组[^/]+:匹配第一个路径参数,[^/]表示除斜杠外的任意字符,+保证参数至少包含一个字符(若允许空参数,可替换为*)(?:me|[^/]+):非捕获分组,实现二选一匹配:要么是固定字符串me,要么是任意非斜杠的参数- 末尾的
/:确保路径以斜杠结尾,与示例格式完全对齐
匹配验证:
| URL路径 | 匹配结果 |
|---|---|
/v1/users/123abc/456def/ | ✅ 匹配 |
/v1/users/123abc/me/ | ✅ 匹配 |
/v1/users/ | ❌ 不匹配 |
/v1/users/123abc/ | ❌ 不匹配 |
/v1/users/123abc/456def/789ghi/ | ❌ 不匹配 |
/v1/users/123abc/me/456def/ | ❌ 不匹配 |
内容的提问来源于stack exchange,提问作者Alex Ford
相关产品推荐
相关产品推荐

