[英]Java regular expression for file path
我正在开发一个应用程序,用户需要提供本地文件位置或远程文件位置。 我必须在此文件位置进行一些验证。
以下是验证文件位置的要求。
路径不包含特殊字符*
|
"
<
>
?
像“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转义
从你的限制看起来这很简单。
^(C:)?(\\\\[^\\\\"|^<>?\\\\s]*)+$
从C:\\或斜杠^(C:)?\\\\
:)开始^(C:)?\\\\
除了那些特殊字符之外还可以有其他东西([^\\\\"|^<>?\\\\s\\\\\\])*
并匹配整个路径$
编辑:似乎C:/和/只是例子。 允许任何/任何使用此:
^([^\\\\"|^<>?\\\\s])*(\\\\[^\\\\"|^<>?\\\\s\\\\\\]*)+$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.