全路径的正则表达式

时间:2014-05-30 22:28:27

标签: c# asp.net .net regex vb.net

用于验证exe的完整路径的正则表达式。我对正则表达式一无所知。

例如:如果exe路径是

C:\Programs\Files\User\Location\Sample.exe

C:\ SAMPLE.EXE

C:\programs\sample.exe

即。需要一个正则表达式来有效的exe的完整路径。

如果它没有exe的完整路径,它应该将其视为错误。

4 个答案:

答案 0 :(得分:2)

你可能不应该在这里使用正则表达式。只需询问文件系统文件是否存在。

如果您只是寻找有效路径(不关心它是否存在)

using System.IO;
var path = "";
if (path == Path.GetFullPath(path) && Path.GetExtension(path) == ".exe")
{
    //We have a valid path.
}

答案 1 :(得分:1)

这是一个简单的正则表达式,假设您在C驱动器上匹配Windows样式路径(我根据您的示例做出的假设):

([A-Z]:)?\\.*\.exe

答案 2 :(得分:0)

下面的正则表达式模式检查有效的本地驱动器(c,d,...),不包括UNC路径(\ ...)。

(?i)^[a-z]:\\[^/:*?"<>|]*[^\\]\.exe$

它不会接受无效的路径字符,如果路径中存在任何字符,则会失败。如您所见,该模式仅接受exe扩展名。您可以将其更改为任何其他扩展程序或多个扩展程序,如下所示:

(?i)^[a-z]:\\[^/:*?"<>|]*[^\\]\.(?:exe|doc|txt)$

在这种情况下,如果文件扩展名是exe,doc或txt,则验证成功。

模式开头的(?i)开关会关闭区分大小写。但是,该开关仅适用于具有EnableClientScript="false"的RegularExpressionValidator。否则,将使用Javascript在客户端进行验证,javascript正则表达式引擎无法识别该开关。并且无法关闭区分大小写。在这种情况下,您必须指定所有可能的匹配,大写或小写:

^[a-zA-Z]:\\[^/:*?"<>|]*[^\\]\.(?:[eE][xX][eE]|[dD][oO][cC]|[tT][xX][tT])$

答案 3 :(得分:-1)

Regex不会告诉您单个EXE的完整路径是否有效,例如,您如何知道文件是否存在,或者目录,或者驱动器本身是什么?< / p>

您需要的是System.IO.File.Exists(xxxxxxxx);