Java跨平台文件路径校验正则表达式编写咨询
路径校验正则实现求助
校验规则说明
待校验输入要么为合法路径,要么命中以下任意一类错误:
- 包含1个以上的
~字符 ~字符未出现在路径起始位置~与\混用:属于Unix路径专属标识的~出现在使用\分隔符的Windows路径中- 包含1个以上的盘符标识(格式为
盘符字母:,如C:) - 盘符标识未出现在路径起始位置
- 盘符标识与
/混用:属于Windows路径专属标识的盘符出现在使用/分隔符的Unix路径中 - 路径中
/与\两种路径分隔符混用
非法路径样例
/folder1/folder2\folder3 C:\User/root /dev/~/ C:/a/b/c/d ~\folder ~/~ ~~ C:\Folder\Subfolder\C:\
现有实现情况
已尝试的正则表达式
([A-Z|a-z]:|~|/|\\[^<em>|"<>\n?]*)|(\\\\.*?\\.*) ([a-zA-Z]:)?(\\[a-zA-Z0-9_.-]+)+\\?
业务方法说明
现有业务方法签名如下:
public static String convertPath(String path, boolean toWin)
方法功能为根据布尔参数toWin将输入路径转换为对应格式:
toWin为true时输出Windows格式路径,为false时输出Unix格式路径- Unix路径规则:可由
~或/开头,除最后一级目录/文件名外,所有子目录需以/结尾,支持.(当前目录)、..(上级目录)语法,文件名不强制要求携带扩展名 - 目前路径转换的核心逻辑已开发完成,仅缺少符合上述校验规则的正则表达式实现。
内容的提问来源于stack exchange,提问作者icarus
相关产品推荐
相关产品推荐

