文件路径的Java正则表达式

标签 java regex validation

我正在开发一个应用程序,用户需要在其中提供本地文件位置或远程文件位置。我必须对此文件位置进行一些验证。
以下是验证文件位置的要求。

路径不包含特殊字符* | " < > ? .
像“c:”这样的路径也是无效的。

路径类似

  • c:\ ,
  • c:\newfolder ,
  • \\casdfhn\share

期间有效
  • c:
  • non ,
  • \\casfdhn

不是。

我根据这个需求实现了代码:

String FILE_LOCATION_PATTERN = "^(?:[\\w]\\:(\\[a-z_\\-\\s0-9\\.]+)*)";
String REMOTE_LOCATION_PATTERN = "\\\\[a-z_\\-\\s0-9\\.]+(\\[a-z_\\-\\s0-9\\.]+)+";

Pattern locationPattern = Pattern.compile(FILE_LOCATION_PATTERN);
Matcher locationMatcher = locationPattern.matcher(iAddress);
if (locationMatcher.matches()) {
    return true;
}

locationPattern = Pattern.compile(REMOTE_LOCATION_PATTERN);
locationMatcher = locationPattern.matcher(iAddress);

return locationMatcher.matches();

测试:

worklocation'        pass
'C:\dsrasr'          didnt pass  (but should pass)
'C:\saefase\are'     didnt pass  (but should pass)
'\\asfd\sadfasf'     didnt pass  (but should pass)
'\\asfdas'           didnt pass  (but should not pass)
'\\'                 didnt pass  (but should not pass)
'C:'                 passed infact should not pass

我试了很多正则表达式都没有满足要求。我正在为此要求寻求帮助。

最佳答案

以下应该有效:

([A-Z|a-z]:\\[^*|"<>?\n]*)|(\\\\.*?\\.*)

以绿色和红色突出显示的行是通过的行。未突出显示的行失败。

记住上面的正则表达式没有为 java 转义

enter image description here

关于文件路径的Java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192199/

相关文章:

ruby - 迭代所有 mongoid 字段的最佳方法

javascript - 有没有办法使用防止默认并仍然接收发布请求?

asp.net-mvc - 不会为嵌套的属性规则呈现不显眼的客户端验证数据属性

java - 默认类名 - 代码味道?

java - 为什么我的正则表达式在 shell 脚本中失败,尽管它在 jregex 中工作?

java - 在java模式匹配器(正则表达式)中如何迭代每个文本并将其替换为不同的文本

python - 匹配不连续/中断的字符串

java - 无法初始化 ArrayListMultimap;由于嵌套?

java - 在 Java 中创建对象

Java堆大小监控解决方案