C# 完整路径的正则表达式

C# 完整路径的正则表达式,c#,asp.net,.net,regex,vb.net,C#,Asp.net,.net,Regex,Vb.net,用于验证exe的完整路径的正则表达式。我对正则表达式不太了解 例如:如果exe路径为 C:\Programs\Files\User\Location\Sample.exe 或 C:\Sample.exe 或 例如,需要一个正则表达式来验证exe的有效完整路径 如果它没有exe的完整路径,则应将其视为错误。此处可能不应使用正则表达式。只需询问文件系统该文件是否存在 如果您只是在寻找有效路径(不关心它是否存在) 下面是一个简单的正则表达式,假设您在C驱动器上匹配Windows样式的路径(我根据您的

用于验证exe的完整路径的正则表达式。我对正则表达式不太了解

例如:如果exe路径为

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

C:\Sample.exe

例如,需要一个正则表达式来验证exe的有效完整路径


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

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

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


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


Regex不会告诉您单个EXE的完整路径是否有效,例如,您如何可能知道文件是否在那里,目录是否在那里,或者驱动器本身是否在那里


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

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

在这种情况下,如果文件扩展名为exe、doc或txt,验证将成功

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

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

尝试使用_splitpath()或其等效项。这听起来不像是正则表达式作业。这听起来像是
System.IO.Path
job.Path.GetFullPath或更具体地说,要查看路径在网络或本地是否已满,请使用IsPathRooted我想在.aspx页面中验证它,其中包含regularexpression validator和controltovalidate。还有Path.GetExtensi这不会去除无效位置中的无效字符或空格,即:
C:\error\\\
C:\\\;:*?
@Kita:谢谢。我如何使它接受小的C:\,现在它只接受C:\@Kita您无法修复此问题。您必须知道所有有效和无效字符,这取决于操作系统和区域设置。只有通过gh
IO.Path
和额外检查。@Kita:谢谢。我也想接受小写字母C:drive。也就是说,它接受C:或D:。也就是说,C:\sample.exe或C:\sample.exe-两者都应该可以。@Wearwolf请不要进行会导致其余答案变得混乱的编辑。您的编辑在一定程度上是有效的,但答案仍然声明:t此解决方案仅适用于C驱动器。这不再正确。
.IsPathRooted
不完全可靠。您必须进行其他检查。例如:检查备注部分:它也适用于
\\
UNC路径。此外,它还检查
.GetInvalidPathChars()
,因此文件名中也允许使用“*/:?\”。我想还有一些情况我不记得了。或者ie
C:\..\test.exe
返回True。有太多的情况需要处理,但你需要更多的代码才能接近近似值;p@porkchop:已解析嵌入的
,不确定如何最好解决``问题(尤其是因为它对用户来说可能没问题)rofl.it甚至为
1:\.\test.exe返回true。lol:D我告诉你。如果你看到我必须测试路径的代码块,你会发疯的。这就是为什么我不想发布它。bcs我甚至还没有完全测试它。它需要的是一个正则表达式健全性检查。或者一系列字符串检查。最好将你的路径和文件名分开尽管如此。检查在某种程度上更可靠。是的,它只检查:冒号,文档中没有指定,它说它检查它是否是驱动器号。@Sharpeye500最后一条注释,如果您只想读取文件或将文件保存到磁盘,这是一种可能的方法。您可以检查文件夹是否存在,如果存在,也可以表示它是有效的,然后使用正则表达式检查文件名。如果要读取文件,只需直接检查它是否存在。但需要将路径和文件名保留在单独的字符串中以进行检查。
using System.IO;
var path = "";
if (path == Path.GetFullPath(path) && Path.GetExtension(path) == ".exe")
{
    //We have a valid path.
}
([A-Z]:)?\\.*\.exe
(?i)^[a-z]:\\[^/:*?"<>|]*[^\\]\.exe$
(?i)^[a-z]:\\[^/:*?"<>|]*[^\\]\.(?:exe|doc|txt)$
^[a-zA-Z]:\\[^/:*?"<>|]*[^\\]\.(?:[eE][xX][eE]|[dD][oO][cC]|[tT][xX][tT])$