C# 用于验证文件名和相对路径的正则表达式,在Windows中没有向上导航(..\)

C# 用于验证文件名和相对路径的正则表达式,在Windows中没有向上导航(..\),c#,windows,regex,naming-conventions,user-input,C#,Windows,Regex,Naming Conventions,User Input,我试图验证用户输入的文件名和路径在C#GUI中的结构是否正确。我不需要确保文件存在,只需要确保名称是有效的windows文件名,路径是当前工作目录中的有效相对路径。绝对路径必须被明确拒绝。Regex从来都不是我喜欢的 可接受的输入为: “myfiles\mydocument.pdf” “另一个\u文件夹\an0th3r\u fi1e.fake” “\folder\file.docx”(当前目录名称) 被拒绝的投入将是: “C:\anything” “内部文件夹\文件???*>\myfile.pd

我试图验证用户输入的文件名和路径在C#GUI中的结构是否正确。我不需要确保文件存在,只需要确保名称是有效的windows文件名,路径是当前工作目录中的有效相对路径。绝对路径必须被明确拒绝。Regex从来都不是我喜欢的

可接受的输入为:
“myfiles\mydocument.pdf”
“另一个\u文件夹\an0th3r\u fi1e.fake”
“\folder\file.docx”(当前目录名称)

被拒绝的投入将是: “C:\anything”
“内部文件夹\文件???*>\myfile.pdf”
“文件夹\文件”(开头或结尾的空格)
“…\文件夹位于别处\file.txt”(向上导航)

谢谢你的帮助

作为一个松散的指南:

试试这个:

@"(\.\\)?([a-zA-Z0-9_-]+[.a-zA-Z0-9_-]*\\)*[a-zA-Z0-9_-]+[.a-zA-Z0-9_-]*" @“(\.\\)?([a-zA-Z0-9\-]+[.a-zA-Z0-9\-]*\\)*[a-zA-Z0-9\-]+[.a-zA-Z0-9\-]*”
请注意,这是。

为此您需要进行大量的单元测试。谢谢!我现在正在看一看;它似乎能满足我的需要。我很欣赏这篇文章。这是一本有趣的书。