在Windows或DOS操作系统中,文件路径满足以下5个特点:
开头字符为硬盘的盘符,如C:、D:等;
被字符“/”分割的字符串;
被分割后的每一个字符串要么是盘符,要么是文件夹名称。其中,文件夹名称的末尾可以包含空白字符;
如果字符“/”后面为文件夹名称,则该字符后面不能紧接空白字符。
如果字符“/”前面为盘符,则该字符后面可以紧接空白字符。
1.盘符验证
盘符一般由一个英文字符和冒号字符(:)组成。以下正则表达式能够验证盘符。
[a-zA-Z]: (51)
2.文件夹名称验证
在Windows或DOS操作系统中,文件夹名称和文件名称命名规则相似。根据 4.2.5 小节,可以知道验证文件夹名称的正则表达式。以下正则表达式能够验证文件夹名称。
^(?! )[^///:*?"<>|]+(?<! )$ (52)
3.文件路径验证
综合上述两点,可以知道验证文件路径的正则表达式。以下正则表达式能够验证文件路径。
^[a-zA-Z]:(((//(?! )[^///:*?"<>|]+)+//?)|(//))/s*$ (53)
正则表达式(138)解释:
^和$分别匹配字符串的开始位置和结束位置。
[a-zA-Z]:匹配盘符。
(//)匹配字符“/”,它和[a-zA-Z]:、/s*组合而成的表达式[a-zA-Z]:///s*将匹配硬盘根目录的路径。
[^///:*?"<>|]+匹配文件夹名称。
(?! )[^///:*?"<>|]+匹配不是以空白字符开头的文件夹名称。
//(?! )[^///:*?"<>|]+)+匹配由1个或多个“字符/+不是以空白字符开头的文件夹名称”组成的字符串,如/Book/Rexpression。
//?可以匹配0个或1个字符“/”,它将匹配路径的最后一个字符“/”。
/s*匹配路径最后的空白字符。
使用工具Regex Tester测试正则表达式(138),结果如图所示。