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

问题描述 投票:-3回答:1

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

这是我的要求:

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

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

谢谢!

java regex
1个回答
1
投票

See regex in use here

^(?!.*\/\.{2}\/)\/[\w.~\/-]*$

Usage

注意:数组中的前两个字符串无效,因为它们包含/../。第三个字符串包含无效字符:

var a = [
  "/../",
  "/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/../0123456789~-_./",
  "/:",
  "/.",
  "/././",
  "/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789~-_./"
];
var r = /^(?!.*\/\.{2}\/)\/[\w.~\/-]*$/;

a.forEach(function(s){
  console.log(r.test(s));
});

说明

  • ^在字符串开头处断言位置
  • (?!.*\/\.{2}\/)负向前瞻确保后面的内容不匹配 .*任何次数的任何角色 \/匹配文字斜线/ \.{2}两次匹配点字符 \/匹配文字斜线/
  • \/匹配文字斜线/
  • [\w.~\/-]*任意次数匹配集合中的任何字符(单词字符,.~/-
  • $在线的末尾断言位置
© www.soinside.com 2019 - 2024. All rights reserved.