我想检查我收到的路径是否是绝对路径。
这是我的要求:
我尝试了几个表达式,找不到正确的表达式。任何帮助,将不胜感激。
谢谢!
^(?!.*\/\.{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.~\/-]*
任意次数匹配集合中的任何字符(单词字符,.
,~
,/
,-
)$
在线的末尾断言位置