××××××××××××××高分求一正则表达式××××××××××××

jimu8130 2007-07-10 11:31:44
表达式要求
1 针对的是文件夹的路径(包括相对和绝对路径)而不是具体某个文件!
2 路径必须是本机的路径(如果类似如下形式\\Server\s\则应属于非法路径的)
3 不包括具体文件的名称,而仅仅是文件夹(如果类似如下形式c:\sss\m.txt则应属于非法路径)
4 最好不要回答诸如“你去哪里看看啊”、“用google搜索啊”,因为我在网上搜索过了,也去过http://www.regular-expressions.info/搜索过了,可仍然没找到符合我要求的,如果您搜索到了,最好能给出具体的网页地址。
...全文
713 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2007-07-10
  • 打赏
  • 举报
回复
用在程序中为什么不用Directory.Exists来判断呢,如果是相对路径,可以先取得当前目录,把相对路径替换成绝对路径再判断

因为.是允许的字符,如果是正则,是没法区分是文件还是文件夹的,也就是无法区分是否正确的,比如test.txt作为文件夹名是合法的,除非你自己再定义的某些规则,才可以把这些排除,但那就要你详细描述一下你的规则了
CrazyGou 2007-07-10
  • 打赏
  • 举报
回复
>因为我觉得文件名规则是个潜规则(大家都知道的),就没有提到

试试这个
^([a-zA-Z]:\\(?!\\))?\\?([^\\/:*"?|<>]{1,255}\\)*([^\\/:*"?|<>.]{1,255}\\?)?$
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to bdbox() :
请看清楚要求再发,我是要符合下面所有要求的表达式,而不是只合适一个
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to lxcnn(过客):
因为我觉得文件名规则是个潜规则(大家都知道的),就没有提到
用在程序里面,验证用户输入的路径是否合法

to CrazyGou(从前,有个人叫小蔡,被放了一夜,馊了):
我都在试验
bdbox@qq.com 2007-07-10
  • 打赏
  • 举报
回复
1.\\[\s\S]\\
2.[a-zA-Z]\:[\s\S]
3.\\[\s\S]\\


---------------------------------------------
EMail:bdbox@163.com 请给我一个与您交流的机会!
CrazyGou 2007-07-10
  • 打赏
  • 举报
回复
^(?:[a-zA-z]:\\(?!\\))?\\?(?:[^:\\]+\\)*([^:\\.]+\\?)?$
-过客- 2007-07-10
  • 打赏
  • 举报
回复
这个要看你的规则而定了,一般文件名规则是不包含:\/:*?"<>|这些字符的
看你的要求又不是这样,那就需要你具体描述一下你的规则了,允许哪些字符,或者反过来,不充许哪些字符,多给几个可以通过和不可以通过的例子也行
另外,用在什么环境下,验证控件还是程序里

^([a-zA-Z]:)?(\\[^\\\/:*?"<>|.]+)+\\?$
jimu8130 2007-07-10
  • 打赏
  • 举报
回复

我试验看看你的新方法
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to shorter:
还是一样的问题,如果\s\test.xx一样的可以通过!
shorter 2007-07-10
  • 打赏
  • 举报
回复
^([a-zA-Z]:)?(\\)?([^/\\:*?"<>|\.]+[\\]?)*$
重新发个
忘了过滤.
shorter 2007-07-10
  • 打赏
  • 举报
回复
^([a-zA-Z]:)?(\\)?([^/\\:*?"<>|]+[\\]?)*$

才对。还要过滤文件夹名中的非法字符
keystudio 2007-07-10
  • 打赏
  • 举报
回复
◎至于那个文件。。。文件夹名要是也叫a.rar怎么办...
呵呵,肯定不会的你考虑太多也想少了

-------------------------
如果文件夹名不可能为a.rar之类
那过滤点就好了
Regex re1 = new Regex(@"^([a-zA-Z]:)?(\\[^\\\.]+)*(\\)?$");

测试:c:\Server\s\ true
\\Server\s\ false
\server\s true
c:\Server\s\test.xx false
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
◎至于那个文件。。。文件夹名要是也叫a.rar怎么办...
呵呵,肯定不会的你考虑太多也想少了
keystudio 2007-07-10
  • 打赏
  • 举报
回复
jimu8130(给老子跪下来唱征服) ( ) 信誉:100 Blog 加为好友 2007-07-10 11:47:45 得分: 0
to keystudio(桃花影落飞神剑 碧海潮生按玉箫) :
但是\s\test.xx可以通过

----------------------------------

是啊 那个文件夹要是叫test.xx怎么办呢...
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
to keystudio(桃花影落飞神剑 碧海潮生按玉箫) :
但是\s\test.xx可以通过
keystudio 2007-07-10
  • 打赏
  • 举报
回复
至于那个文件。。。文件夹名要是也叫a.rar怎么办...
shorter 2007-07-10
  • 打赏
  • 举报
回复
^[a-z]:\\([^/\\:*?"<>|]+[\\]?)*$

在c#里可能你还要对\转义为\\
keystudio 2007-07-10
  • 打赏
  • 举报
回复
Regex re1 = new Regex(@"^([a-zA-Z]:)?(\\[^\\]+)*(\\)?$");

测试:c:\Server\s\ true
\\Server\s\ false
\server\s true
chenzhifeng 2007-07-10
  • 打赏
  • 举报
回复
正则好像高歌行的....等他来,呵呵……
jimu8130 2007-07-10
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5646/5646321.xml?temp=.2497064
这里也有,如果您能答对,两个贴所有分都归答对的人
加载更多回复(15)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧