我需要一个正则表达式来匹配许多特定的路径/字符串,但我无法弄明白。
E.g。
../ foo / hoo / something.js - >需要匹配 ../ foo / hoo /
../ foo / bar / somethingElse.js - >需要匹配 ../ foo / bar /
../ foo / something-else.js - >需要匹配 ../ foo /
我没有运气的尝试是以下正则表达式:
/\..\/foo\/|bar\/|hoo\//g
答案 0 :(得分:1)
您可以使用正则表达式
(\/[^\/\s]+)+(?=\/)
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)
这应该是匹配所有目录而没有文件名的正则表达式。
/^(.*[/])[^/]+$/