正则表达式绝对路径匹配 - Java

时间:2017-12-19 16:39:51

标签: java regex

我想查看我收到的路径是否是绝对路径。

这是我的要求:

  • 以" /"
  • 开始
  • 仅包含英文字母,数字和特殊字符' _', '。',' - ','〜'和' /'。
  • 不包含任何字符串" /../"。

我尝试了几个表达式,但找不到正确的表达方式。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

代码

See regex in use here

^(?!.*\/\.{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.~\/-]*任意次数匹配集合中的任何字符(字词字符.~/-
  • $断言行尾的位置