特定字符串/路径的正则表达式

时间:2017-12-12 08:53:58

标签: javascript regex

我需要一个正则表达式来匹配许多特定的路径/字符串,但我无法弄明白。

E.g。

../ foo / hoo / something.js - >需要匹配 ../ foo / hoo /

../ foo / bar / somethingElse.js - >需要匹配 ../ foo / bar /

../ foo / something-else.js - >需要匹配 ../ foo /

我没有运气的尝试是以下正则表达式:

/\..\/foo\/|bar\/|hoo\//g

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式

(\/[^\/\s]+)+(?=\/)

请参阅regex101 demo

function match(str){
  console.log(str.match(/(\/[^\/\s]+)+(?=\/)/)[0]);
}

match('./foo/hoo/something.js');
match('../foo/bar/somethingElse.js');
match('../foo/something-else.js');

答案 1 :(得分:1)

这应该适合你:

/(\.\.\/foo\/(hoo\/|bar\/)?)/

https://regex101.com/r/1aTf7y/1

因此,您首先选择../foo/,然后创建一个可以包含hoo/bar/的群组。问号允许0个或1个实例。

如果你想要不那么具体,你也可以做

/(\.\.\/[^\/]+\/(hoo\/|bar\/)?)/

[^\/]+允许除斜杠之外的所有字符

答案 2 :(得分:1)

这应该是匹配所有目录而没有文件名的正则表达式。

 /^(.*[/])[^/]+$/