【问题标题】:javascript regexp to match path depthjavascript正则表达式匹配路径深度
【发布时间】:2015-06-09 11:37:40
【问题描述】:

过去一个小时一直在努力尝试让这个正则表达式工作,但似乎无法破解它。

它必须是一个正则表达式,我不能使用 split 等,因为它是一个更大的正则表达式的一部分,它使用 .test() 搜索许多其他字符串。

(public\/css.*[!\/]?)

public/css/somefile.css
public/css/somepath/somefile.css
public/css/somepath/anotherpath/somefile.css

这里我试图寻找以 public/css 开头的路径,后跟除另一个正斜杠之外的任何字符。

所以“public/css/somefile.css”应该匹配,但其他两个不应该匹配。

更好的解决方案可能是使用类似

的方式在前缀之后指定要匹配的级别数
(public\/css\/{1,2}.*) 

但我似乎也无法弄清楚这一点,我们将不胜感激。

编辑

不知道为什么这个问题被标记了两次,我已经用示例代码和测试用例明确说明了要求并试图解决这个问题,为什么它被标记了?

【问题讨论】:

  • 使用 regex 和 split 并没有真正互相伤害。

标签: javascript regex


【解决方案1】:

你可以使用这个regex:

/^(public\/css\/[^\/]*?)$/gm
  1. ^ :以
  2. 开头
  3. [^/]:不是/
  4. *?: 任意字符
  5. $:以
  6. 结尾
  7. g: 全球标志
  8. m: 多行标志

【讨论】:

    【解决方案2】:

    这样的?

    /public\/css\/[^\/]+$/
    

    这将匹配 public/css/[除/以外的任何字符]$

    $ 匹配正则表达式中字符串的结尾。

    【讨论】:

    • 感谢您的帮助,我刚刚尝试在 regex101 上似乎不起作用(regex101.com/r/oI6nJ9/2
    • 是的...您使用的网站不会将 $ 视为行尾而是文件结尾...
    猜你喜欢
    • 1970-01-01
    • 2011-11-19
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2022-08-11
    • 2011-06-08
    • 2021-05-09
    相关资源
    最近更新 更多