Javascript 删除URL开头和结尾的斜杠
我有一个类似的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(/^.+\.\//, ''); 预期输出: 如果有人能提供一个清
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*$