http://community.csdn.net/Expert/topic/5646/5646320.xml?temp=.830456
这里也有,如果您能答对,两个贴所有分都归答对的人

解决方案 »

  1.   

    仅仅正则无法做到,c:\sss\m.txt完全可以是一个文件夹路径。
      

  2.   

    to supNate(铅笔) :
    呵呵,你说的属于特殊情况,就算是,能给出你的答案么?
      

  3.   

    c:\sss\m.txt
    正则又不能判断这是文件夹还是文件
    所以不可能有
      

  4.   

    一般情况下试试
    /(^[a-zA-Z]:(\\[^\/:*?"<>]+)+(\\)?$)|(^[.]*(\\[^\/:*?"<>]+)+(\\)?$)/g
    没测试过
      

  5.   

    改下
    /(^[a-zA-Z]:(\\[^\/:*?"<>]*)+(\\)?$)|(^[.]*(\\[^\/:*?"<>]+)+(\\)?$)/g
      

  6.   

    to hbhbhbhbhb1021(天外水火(我要多努力)) :
    相对路径中普通用户想到的也就是
    \s\ss这样的,你列的情况是对程序开发比较熟悉的人才知道的
    所以你例举的不算,我希望作出的正则表达式认为你写的这两个是不合法的!to mingxuan3000(铭轩):
    我能想到的也就上面例举的几个
    \s,\s\s\,\s\s,c:\s,c:\s\这些都是合法的,本来打算不能出现类似\s.sss这样的形式,弄的好像是某个文件的名字样的,后来思前想后,还是去掉这个限制吧。
      

  7.   

    新的表达式要求
    1 针对的是文件夹的路径(包括相对和绝对路径,可能会存在文件夹的名称为s.text这样的情况,那么这种路径也属于合法;相对路径中针对的是\s\,\s这样的路径,而不是咱们程序开发经常用到的../,./这样的都属于非法!)
    2 路径必须是本机的路径(如果类似如下形式\\Server\s\则应属于非法路径的)
    3 文件名规则是不包含:\/:*?"<>|这些特殊字符的
    4 请给出正则表达式的老大,首先尽可能的自测下,起码符合我目前给的这几个条件!如果表达式还能过滤我没例举出来的条件,也请说明下!
      

  8.   

    var reg = /^([a-z]:\\|\\?)?([^ \\\/:\*\?"<>\|][^\\\/:\*\?"<>\|]*\\?)+$/i;
      if(!reg.test(s))
        alert('错误的路径名');
    根据LZ的要求写的   不知道有没有错误,反正我试的时候没试出来
    另外过滤了文件夹开头字母为空格的情况
      

  9.   

    if(!reg.test(s))
    s为你要验证的路径
      

  10.   

    to qf521lx() :
    没关系,感谢你的帮忙
      

  11.   

    var reg = /^([a-z]:\\|\\?)?([^ \.\\\/:\*\?"<>\|]([^\\\/:\*\x?"<>\|]*[^ \.\\\/:\*\?"<>\|])?\\?)+$/i;
      

  12.   

    不会吧  \(space)\   在我这里没有出现异常啊
      

  13.   

    jimu8130兄弟,还是这样吧,如果楼上的兄弟们的正则不能满足要求的话,那整理一下都需要满足什么情况,这样列举出来效果会好些.刚才试了一下,文件夹上有些字符是不能写的,写上会报错,并且第一个字符是空格的话会被替换掉.
      

  14.   

    需要明确的一点是开头或结尾为空格或.的文件夹是不存在的
    如果你把文件夹路径直接打在windows窗口的地址栏内,开头或结尾如果有空格或.那么系统会自动清掉,  但是如果你用某个程序来打开可能会报错
      

  15.   

    to qf521lx():
    需要明确的一点是开头或结尾为空格或.的文件夹是不存在的
    如果你把文件夹路径直接打在windows窗口的地址栏内,开头或结尾如果有空格或.那么系统会自动清掉,  但是如果你用某个程序来打开可能会报错
    ------
    我的程序当中,这个路径是由用户输入的(input type=text),所以用户并不知道,可能他只是误输入而已,但是程序得给出有效提示!我把你的正则去http://regexlib.com/RETester.aspx这里测试(以\(空格)\测试)并没有给出match或者nomatch的测试结果。to hbhbhbhbhb1021(天外水火(我要多努力)):
    我已经例举了主要的要求
    1 针对的是文件夹的路径(包括相对和绝对路径,可能会存在文件夹的名称为s.text这样的情况,那么这种路径也属于合法;相对路径中针对的是\s\,\s这样的路径,而不是咱们程序开发经常用到的../,./这样的都属于非法!)
    2 路径必须是本机的路径(如果类似如下形式\\Server\s\则应属于非法路径的)
    3 文件名规则是不包含:\/:*?"<>|这些特殊字符的
    至于其他的要求,比如刚刚和qf531lx讨论的\ \情况,我觉得这个是很明显的不合法的情况。在开发中,作为开发人员来说首先避免的是自己能想到的基本错误,然后在此基础满足用户或者特定环境下提出的附加要求(所以一开始我的要求并没有“文件名规则是不包含:\/:*?"<>|这些特殊字符的”)
      

  16.   

    <html>
    <head>
        <title>alert</title>
    <script language="javascript">
    function isxml(s){
      var reg = /^([a-z]:\\|\\?)?([^ \.\\\/:\*\?"<>\|]([^\\\/:\*\x?"<>\|]*[^ \.\\\/:\*\?"<>\|])?\\?)+$/i;
      if(!reg.test(s))
        alert('错误的路径名');
    }
    </script>
    </head>
    <body>
    输入一个文件路径
    <input type="text" onblur="isxml(this.value)" />
    </body>
    </html>
    //被你搞晕了~~   我不知道我的到底有没有问题, 我也试了/  /的情况, 没事啊
    哎~匹配文件路径的正则也实在难写,看来以后正则的功底还得继续打啊~
      

  17.   

    <TEXTAREA id="ta" style="width:100%; height:100%">
    d:\windows\$ntservicepackuninstall$\reg01561
    books
    h:
    h:\
    h:\setupfiles
    h:\virtualdisk
    h:\hdir.txt
    h:\my favorites
    h:\win98
    h:\flash\\
    :\mp3
    \西楚霸王
    h:\system volume information\_restore{7bda94da-b5f6-4bd0-9079-4fb1fee794e6}\rp82\
    h:\system volume information\_restore{7bda94da-b5f6-4bd0-9079-4fb1fee794e6}\rp82\</TEXTAREA>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var ar = ta.value;
    ar = ar.split("\r\n");
    ta.value = "";for(var i=0;i<ar.length;i++){
        var reg = /^(([a-z]:(\\[^\\\/:\*\?"<>\|]+)*\\?)|(\\?[^\\\/:\*\?"<>\|]+(\\[^\\\/:\*\?"<>\|]+)*\\?))$/ig;
        ta.value += reg.test(ar[i])+"\t"+ar[i]+"\r\n";
    }
    //-->
    </SCRIPT>