Javascript Regex:根据路径分隔符

时间:2016-08-06 02:33:11

标签: javascript regex regex-greedy

我尝试以重复方式匹配文件夹/文件 - 基于路径分隔符/

正则表达式:

/^(?:music|pictures)\/tom(?:(?=\/)\/([\w\-]+(?:\s+[\w\-]+)*)|$)$/gm

以上正则表达式的说明:

// Match a base-directory called music/pictures
// Match if directory tom exist
// If delimiter was found, match delimiter and word-character and hypen (no spaces etc at the beginning)
// Match spaces, word-characters and hypen (no spaces etc at the end)
//If delimiter was not found, end string
//End string

每次找到分隔符/(正向前瞻)时,它也应该与剩余条件匹配。除了子文件夹击中正则表达式之外,它的效果非常好。

music/tom/foldername

music/tom/folder name

music/tom/foldername/folder2  <--- Does not match

正如您所看到的,最后一条路径无法匹配。如何扩展/改进正则表达式以匹配子文件夹?

正则表达式演示:https://regex101.com/r/oG9bC3/1

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来获得您想要的内容

^(?:music|pictures)\/tom((?:\/(?:[\w-]+(?:[ ]+[\w-]+)*))+)$

<强> Regex Demo

注意

  • 当你已经知道下一个角色需要什么时,你不需要先行。
  • -在** character class first / last 中使用时不需要进行转义。