没有找到合适的匹配 一个UNC路径(\\MachineName\Folder\SubFolder\) 或者硬盘路径的正则表达式,所以自己写了一个.
有问题的话欢迎提意见.
正则表达式:^\s*([a-zA-Z]:\\|\\\\)([^\^\/:*?"<>|]+\\)*([^\^\/:*?"<>|]+)$
第一个字符^匹配字符串的开始, 最后一个字符$匹配字符串之结束。
\s* 匹配0个或者多个空格
[a-zA-Z]: 匹配一个字母和一个冒号
\\: 正则表达式里\是关键字符, 需要用\\ 表示 \, 所以匹配为一个\和一个冒号。同理 \\\\: 匹配两个\和一个冒号。
[^\^\/:*?"<>|]+ 一个或者多个不是^\/:*?"<>|的字符,
后面同理。
注意:在c#中使用的时候, 定义正则表达式的字符串需要把双引号" 用""替代.
using System;
using System.Text.RegularExpressions;
namespace pathregextest
{
class Program
{
static void Main(string[] args)
{
string regexPattern = @"^\s*([a-zA-Z]:\\|\\\\)([^\^\/:*?""<>|]+\\)*([^\^\/:*?""<>|]+)$";
Regex regex = new Regex(regexPattern);
string[] strs = new string[] { @"\\v-yuxuac\tools\Download",
@" \\v-yuxuac\tools\Download\ ",
@"c:\tools\pic\",
@"c:\tools\pic",
@"\\fsa'ahre\saffdsa\gfds",
@"dsd:\fdsa\er",
@"\\c\fdsagre",
@"c:\tools\p^c"};
foreach (string str in strs)
{
Console.WriteLine(str + " : " + regex.IsMatch(str));
}
Console.ReadLine();
}
}
}