gpt4 book ai didi

javascript - 模式匹配 webkitRelative 中的第一个子目录

转载 作者:行者123 更新时间:2023-11-28 08:10:58 26 4
gpt4 key购买 nike

基本上,我想模式匹配第一个目录文件夹或文件。

如何模式匹配两个或“/”之间的所有字符串。例如。

我有这个 list :

Folder 1/File 2.avi
Folder 1/Folder2/File.avi
Folder 1/Folder2/Fils.mfg
Folder 1/Folder2/Folder 3/flag.gif

在此列表中,我希望输出为,

Folder 1/File 2.avi
Folder 1/Folder2/

我刚刚开始使用 javascript 正则表达式并且迷失了。我的尝试非常糟糕

str.match(/\/[abc]\//)

谢谢你,杰杰

最佳答案

<强>1。使用正则表达式匹配路径

它们在您文件中的方式,您可以使用它(请参阅 demo ):

^[^/]*/[^/\r\n]*/?

上面的正则表达式将匹配 Folder 1/Folder2/ 三次,因此当您迭代匹配项时,您只想添加不在数组中的匹配项。

<强>2。仅当结果数组中尚不存在时才添加匹配的路径

在代码中,您可以将匹配项添加到数组中。请参阅online demo .

<script>
var subject = 'Folder 1/File 2.avi \n \
Folder 1/Folder2/File.avi \n \
Folder 1/Folder2/Fils.mfg \n \
Folder 1/Folder2/Folder 3/flag.gif';
var unikmatches = []; // we will build this
var regex = /^[^\/]*\/[^\/\r\n]*\/?/mg;
var match = regex.exec(subject);
while (match != null) {
// matched text: match[0]
// only add if it is not yet in unikmatches
if(unikmatches.indexOf(match[0]) < 0 ) {
unikmatches.push(match[0]);
document.write(match[0],"<br>");
}
match = regex.exec(subject);
}
</script>

解释正则表达式

^                        # the beginning of the string
[^/]* # any character except: '/' (0 or more times
# (matching the most amount possible))
/ # '/'
[^/\r\n]* # any character except: '/', '\r' (carriage
# return), '\n' (newline) (0 or more times
# (matching the most amount possible))
/? # '/' (optional (matching the most amount
# possible))

关于javascript - 模式匹配 webkitRelative 中的第一个子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24217996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com