Javascript 删除URL开头和结尾的斜杠

Javascript 删除URL开头和结尾的斜杠,javascript,jquery,regex,url,slash,Javascript,Jquery,Regex,Url,Slash,我有一个类似的URL: var folderPath = 'files/New folder'; 以下是我要防止的情况,例如用户尝试: ../../.././../../././../files/New folder 或 或 基本上我需要从URL中提取新文件夹,因此我需要清理URL 我试过什么? 尝试了以下操作,但只删除URL开头的多个斜杠“../”和“/” var cleaned = folderPath.replace(/^.+\.\//, ''); 预期输出: 如果有人能提供一个清

我有一个类似的URL:

var folderPath = 'files/New folder';
以下是我要防止的情况,例如用户尝试:

../../.././../../././../files/New folder

基本上我需要从URL中提取新文件夹,因此我需要清理URL

我试过什么?

尝试了以下操作,但只删除URL开头的多个斜杠“../”和“/”

var cleaned  = folderPath.replace(/^.+\.\//, '');
预期输出: 如果有人能提供一个清理url的功能,那将非常有帮助

files/New folder

因此,这里的想法是首先使用正则表达式,我从输入字符串中取出匹配项,但它包括您也要删除的额外的
/
,因此在回调函数中,我删除那些
/
,同时使用replace on matched group

我想这(使用替换两次)仍然可以改进,我正在尝试进一步改进

函数替换点(输入){
返回输入。替换(/^[./]+([^.]+)\/?*/g,函数(匹配,组){
返回组。替换(/(.*?\/*$/,“$1”)
})
}
log(replaceDots(`../../../../../../../../../../../files/New folder`))
log(replaceDots(`files/newfolder`))
log(replaceDots(`../../../../../../../../../../../../../../../../../../../../../../../`))

log(replaceDots(`///../..////files/New folder///../`))
您可以使用此正则表达式删除路径中所有不需要的文本

\/?\.\.?\/|\/{2,}|\/\s*$
\/?\.\.\/
这将删除类型为
./
/
/../
\/{2,}
的所有模式,并删除路径中两个或多个
/
\/\s*
的所有后续斜线

console.log('../../../../../../../../../../files/New folder'。替换(/\/?\.\.\?\/\/\/\/\/{2,}124;\/\s*$/g',);
console.log('../../../../../../../../../../../../../../../../../../'.log)。替换(/\/../../../../../../../../../../../../../../../../../../../'.replace(/\/../../../../../../../../../../../../../../;
console.log('./files/New folder/'.replace(/\/?\.\.\.?\/\/\/\/{2,}\\\/\s*$/g',);
console.log('///../..////files/New folder///../'.replace(//?\.\.\.\.\?\/\.\/\\\/\/\/{2,}}124;\/\s*$/g',)过滤器怎么样

var oneSlash=(str)=>str.split(“/”).filter(
word=>word.match(/\w+/)
).join(“/”)
log(oneSlash(“../../../../../../../../files/New文件夹”))
console.log(oneSlash(“///../..////files/New folder///”)
//这条想象中的无用之路和其他的一样结束了

console.log(oneSlash(“files/////New folder/”)
删除前面有
/
加上结尾的所有
/

var folderpath=[
“../../../../../../../../../files/新文件夹”,
“../../../../../../../../../../../../../../../../../../../../../../../../../../”,
“/files/New folder/”
];
var re=new RegExp('(?:[./]+)/|/$','g');

forEach(e=>console.log(e.replace(re,“”))您的预期输出是什么
files/New folder
?@CertainPerformance是的,这是我预期的输出,带有足够信息的卡夫式问题,可以给出相关答案。请更新以清理类似的内容,也
///../../..////files/New folder///../
,对于第三个问题,尾斜线仍然是present@MR_AMDEV是否要删除最后一个
/
也是吗?ok将相应更新Yes我想删除最后一个斜杠还感谢Ikes-两个正则表达式替换为一个;)这太棒了。但是只有一种情况我认为当输入像
/../files////new folder/
时它会失败当然,但是无用的路径不是规范的一部分:)@mplungjan你能提供一个我不能使用的函数吗?这个答案比其他方法更好,适用于大多数情况
files/New folder
\/?\.\.?\/|\/{2,}|\/\s*$