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

求可验证目录路径的正则表达式:匹配../../a/b/c,不匹配../a/../b/c

嘿,这个需求我懂了——要匹配那种先连续跳上级目录,之后只往子目录走的路径,不能有进了某个目录又退回来的操作对吧?没问题,给你一个精准的正则表达式:

^(?:\.\./)+(?:(?!\.\.)[^/]+(?:/(?!\.\.)[^/]+)*)?$

规则拆解

我给你掰扯清楚每个部分的作用,方便你理解和调整:

  • ^:锚定字符串的开头,确保我们从路径最开始匹配
  • (?:\.\./)+:匹配一个或多个连续的../,用非捕获组(?:...)是为了避免额外的分组捕获,不影响后续逻辑
  • (?: ... )?:这部分是可选的,允许路径只由../组成(比如../../这种纯上级跳转的路径)
    • (?!\.\.)[^/]+:匹配单个合法目录名——(?!\.\.)是负向前瞻,保证这个片段不是..;[^/]+确保目录名里不含/(毕竟路径分隔符不能出现在目录名里)
    • (?:/(?!\.\.)[^/]+)*:支持多级子目录,匹配零个或多个「/+合法目录名」的组合

测试验证

咱们来对照你的需求试几个例子:

会匹配的路径

  • ../../a/b/c (完全符合先跳上级再进子目录的规则)
  • ../my-project/src
  • ../../ (纯上级跳转)
  • ../docs/v1.2 (目录名带点也没问题,只要不是..就行)

不会匹配的路径

  • ../a/../b/c (中间出现了a/../,属于进目录又退回的操作)
  • ../a/..
  • ../../a/../b
  • home/../docs (开头不是../,直接排除)

可选调整

如果需要支持绝对路径(比如/../../a/b/c),可以把正则开头改成:

^(?:/?\.\./)+(?:(?!\.\.)[^/]+(?:/(?!\.\.)[^/]+)*)?$

如果要禁止路径里的连续斜杠(比如../../a//b/c),可以把目录部分的正则改成:

^(?:\.\./)+(?:(?!\.\.)[^/]+(?:/(?!\.\.|/)[^/]+)*)?$

内容的提问来源于stack exchange,提问作者Tupu Sipaia Kikhteva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:27:19