用java正则表达式验证windows和linux路径及扩展
我正在尝试编写一个函数,该函数将验证给定路径在具有文件扩展名的Linux/Windows中是否有效
例:
Windows路径:D:\DATA\My_Project\01_07_03_061418738709443。文档
Linux路径:/source_data/files/08_05_09_1418738709443。pdf
我试过的代码是
static String REMOTE_LOCATION_WIN_PATTERN = "([a-zA-Z]:)?(\\\\[a-z A-Z0-9_.-]+)+.(txt|gif|jpg|png|jpeg|pdf|doc|docx|xls|xlsx|DMS)\\\\?";
static String REMOTE_LOCATION_LINUX_PATTERN = "^(/[^/]*)+.(txt|gif|jpg|png|jpeg|pdf|doc|docx|xls|xlsx|DMS)/?$";
public boolean checkPathValidity(String filePath) {
Pattern linux_pattern = Pattern.compile(REMOTE_LOCATION_LINUX_PATTERN);
Pattern win_pattern = Pattern.compile(REMOTE_LOCATION_WIN_PATTERN);
Matcher m1 = linux_pattern.matcher(filePath);
Matcher m2 = win_pattern.matcher(filePath);
if (m1.matches() || m2.matches()) {
return true;
} else {
return false;
}
}
如果路径在windows/linux中有效,此函数将给出结果true。 对于某些包含日期的路径,?,*在他们的道路上
# 1 楼答案
# 2 楼答案
您基本上可以将这两种模式结合起来,如下所示:
[a-zA-Z]:\\(?:([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\|..\\)*([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\?|..\\))?
\/.*
(\/.*|[a-zA-Z]:\\(?:([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\|..\\)*([^<>:"\/\\|?*]*[^<>:"\/\\|?*.]\\?|..\\))?)
这对我的角度输入标记模式验证很有效
有关详细信息How would I match a pattern for both windows and Linux directory path?请检查ling