我想查看我收到的路径是否是绝对路径。
这是我的要求:
我尝试了几个表达式,但找不到正确的表达方式。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
^(?!.*\/\.{2}\/)\/[\w.~\/-]*$
注意:数组中的前两个字符串无效,因为它们包含/../
。第三个字符串包含无效字符:
。
var a = [
"/../",
"/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/../0123456789~-_./",
"/:",
"/.",
"/././",
"/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789~-_./"
];
var r = /^(?!.*\/\.{2}\/)\/[\w.~\/-]*$/;
a.forEach(function(s){
console.log(r.test(s));
});

^
在字符串开头处断言位置(?!.*\/\.{2}\/)
否定前瞻确保后续内容不匹配
.*
任意次数的任何字符\/
匹配文字斜杠/
\.{2}
按字面意思匹配点字符,两次\/
匹配文字斜杠/
\/
匹配文字斜杠/
[\w.~\/-]*
任意次数匹配集合中的任何字符(字词字符.
,~
,/
,-
)$
断言行尾的位置