用于目录路径格式验证的正则表达式
Regex for directory path format validation
我正在尝试构建一个正则表达式来验证目录路径,但我找不到执行该操作的好方法。
有人可以帮我吗?
示例:
/test/ -> could match
/test/toto/tata -> could match
\test\ -> could match
\test\toto\tata -> could match
//test/ -> could not match
\test\ -> could not match
/test//toto -> could not match
/test\tata -> could not match
编辑:我试过这个正则表达式,但它并不匹配所有情况。
^(\/{0,1}(?!\/))[A-Za-z0-9\/\-_]+(\.([a-zA-Z]+))*$
您似乎想要确保目录分隔符之间至少有一个字符,字符串只能以单个目录分隔符开头,并且可以选择以目录分隔符结尾。
作为 string.Concat(System.IO.Path.GetInvalidPathChars())
(reference) returns "\"<>|[=12=]\u0001\u0002\u0003\u0004\u0005\u0006\a\b\t\n\v\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f"
,您实际上可以将 [^"<>|\u0000-\u001f]+
放在正则表达式中以匹配子文件夹名称并使用
var pattern = @"^(?=([/\]))(?:[^\/""<>|\u0000-\u001f]+)+?$";
参见regex demo。
详情:
^
- 字符串开头
(?=([/\]))
- 下一个字符必须是 /
或 \
目录分隔符字符(捕获到 </code>)</li>
<li><code>(?:[^\/""<>|\u0000-\u001f]+)+
- 一个或多个重复的目录分隔符,后跟一个或多个有效路径和目录分隔符,即 \
、/
以外的任何字符, "
, <
, >
, |
和控制ASCII字符
?
- 捕获到第 1 组的可选目录分隔符字符
$
- 字符串结尾。
我正在尝试构建一个正则表达式来验证目录路径,但我找不到执行该操作的好方法。 有人可以帮我吗? 示例:
/test/ -> could match
/test/toto/tata -> could match
\test\ -> could match
\test\toto\tata -> could match
//test/ -> could not match
\test\ -> could not match
/test//toto -> could not match
/test\tata -> could not match
编辑:我试过这个正则表达式,但它并不匹配所有情况。
^(\/{0,1}(?!\/))[A-Za-z0-9\/\-_]+(\.([a-zA-Z]+))*$
您似乎想要确保目录分隔符之间至少有一个字符,字符串只能以单个目录分隔符开头,并且可以选择以目录分隔符结尾。
作为 string.Concat(System.IO.Path.GetInvalidPathChars())
(reference) returns "\"<>|[=12=]\u0001\u0002\u0003\u0004\u0005\u0006\a\b\t\n\v\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f"
,您实际上可以将 [^"<>|\u0000-\u001f]+
放在正则表达式中以匹配子文件夹名称并使用
var pattern = @"^(?=([/\]))(?:[^\/""<>|\u0000-\u001f]+)+?$";
参见regex demo。
详情:
^
- 字符串开头(?=([/\]))
- 下一个字符必须是/
或\
目录分隔符字符(捕获到</code>)</li> <li><code>(?:[^\/""<>|\u0000-\u001f]+)+
- 一个或多个重复的目录分隔符,后跟一个或多个有效路径和目录分隔符,即\
、/
以外的任何字符,"
,<
,>
,|
和控制ASCII字符?
- 捕获到第 1 组的可选目录分隔符字符$
- 字符串结尾。