用于验证基于Windows的文件路径(包括UNC路径)的正则表达式

Run*_*bit 5 regex path

我想验证文件名及其完整路径.我尝试了下面的某些正则表达式,但没有一个正常工作.

^(?:[\w]\:|\\)(\\[a-z_\-\s0-9\.]+)+\.(txt|gif|pdf|doc|docx|xls|xlsx)$
and
^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$
etc...
Run Code Online (Sandbox Code Playgroud)

我的要求如下所述:让我们说如果文件名是"c:\ Demo.txt"那么它应该检查每个可能性,就像不应该包含双斜线(c:\\Demo\\demo.text)没有像(c::\Demo\demo.text)那样的额外冒号.应该接受像(\\staging\servers)和其他验证的UNC文件.请帮忙.我真的被困在这里了.

yka*_*hou 2

为什么不使用 File 类?永远使用它!

File f = null;
string sPathToTest = "C:\Test.txt";
try{
f = new File(sPathToTest );
}catch(Exception e){
   Console.WriteLine(string.Format("The file \"{0}\" is not a valid path, Error : {1}.", sPathToTest , e.Message);
}
Run Code Online (Sandbox Code Playgroud)

MSDN: http://msdn.microsoft.com/en-gb/library/system.io.file%28v=vs.80%29.aspx

也许您只是在寻找 File.Exists ( http://msdn.microsoft.com/en-gb/library/system.io.file.exists%28v=vs.80%29.aspx )

另请查看 Path 类 ( http://msdn.microsoft.com/en-us/library/system.io.path.aspx )

GetAbsolutePath 可能是获得您想要的东西的一种方法!(http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx

string sPathToTest = "C:\Test.txt";
string sAbsolutePath = "";
try{
   sAbsolutePath = Path.GetAbsolutePath(sPathToTest);
   if(!string.IsNullOrEmpty(sAbsolutePath)){
     Console.WriteLine("Path valid");
   }else{
     Console.WriteLine("Bad path");
   }
}catch(Exception e){
   Console.WriteLine(string.Format("The file \"{0}\" is not a valid path, Error : {1}.", sPathToTest , e.Message);

}
Run Code Online (Sandbox Code Playgroud)