You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合法目录路径前缀校验正则表达式编写求助

合法目录路径前缀校验正则方案

最终可覆盖全部规则的正则表达式如下:

^\/(?:[a-zA-Z0-9_-]+(?:\/[a-zA-Z0-9_-]+)*)?$

匹配逻辑拆解

  • 同时兼容两类合法场景:
    • 特殊场景:仅单个正斜杠/直接匹配通过
    • 常规路径场景:强制以/开头,后续由合法目录名拼接组成
  • 合法目录名严格限定字符范围为[a-zA-Z0-9_-],仅允许大小写英文字母、数字、下划线、连字符,从字符集层面直接拦截.等其他特殊字符,自动过滤带后缀的文件路径
  • 对路径分隔符/做强结构约束:每一个/后必须紧跟非空合法目录名,从根源杜绝连续斜杠(对应空目录名)的问题
  • 正则末尾固定匹配合法目录名,强制路径不能以/结尾
  • 起始位置固定匹配/,直接拦截未以斜杠开头的相对路径

匹配效果验证

合法路径(全部匹配通过)

  • /
  • /abc/def
  • /hello_123/world-456
  • 单级目录场景如/test、/a-b_c123也可正常匹配通过

非法路径(全部拦截)

  • /abc/def/(结尾带斜杠)
  • /abc//def(存在连续斜杠/空目录名)
  • //(多连续斜杠)
  • abc/def(未以斜杠开头)
  • /abc/def/file.txt(携带带后缀的文件名)
  • 含其他特殊字符的路径如/ab@c、/ab c也会被正常拦截

原正则缺陷说明

你之前编写的^(\/+(?!\/))[A-Za-z0-9\/\-_]+$存在三个核心问题:

  1. 将/直接放入通用允许字符集,没有约束/的出现位置和前后关联规则,既无法识别连续斜杠,也无法拦截结尾斜杠
  2. 开头部分写了\/+,允许开头出现多个连续斜杠,不符合规则要求
  3. 没有排除.字符,会错误匹配带后缀的文件路径

内容的提问来源于stack exchange,提问作者Nalyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:15:29