验证windows下正确路径的正则表达式。,比如D:\abc\dsdd,D://data,路径中不含有特殊字符

解决方案 »

  1.   

    C:\Documents and Settings\Administrator\My Documents\下载\2007711_!@#$%^&16161
    我这个是合法的路径
      

  2.   


    System.out.println("D://a//a.txct".matches("(?i)^[a-z]:(//||\\\\)[\\w\\u4e00-\\u9fa5]+?((([/\\\\][\\w\\u4e00-\\u9fa5]+)*?[/\\\\][\\w\\u4e00-\\u9fa5\\.]*$)||$)"));
      

  3.   

    试一下吧,可以到文件名。你测测行不?D://a.txt D:\a.txt D://a/a.txt等都合法 例如:D://a//a.txt不合法
      

  4.   

    (?i)^[a-z]:(//||\\\\)[\\w\\u4e00-\\u9fa5\\s]+((([/\\\\][\\w\\u4e00-\\u9fa5\\s]+)*$)||$)
    还是不带文件名了,这个你试试吧,刚才忘了空格了
      

  5.   

    C:\\Documents and Settings\\Administrator\\桌面,这个也是合法的,使用上面正则校验位非法
      

  6.   

    纠正一下,可以匹配的,对于类似C:\\Documents and Settings\\Administrator\\桌面\\abc匹配成功,但是对于只有C:\\匹配失败,在第一个[]后加一个“*”
    (?i)^[a-z]:(//||\\\\)[\\w\\u4e00-\\u9fa5\\s]*+((([/\\\\][\\w\\u4e00-\\u9fa5\\s]+)*$)||$)
      

  7.   

    要是含有特殊字符 D:\data\abc@#则匹配不上,且D:\data\也匹配不上
      

  8.   

    例如 D:,D:\,D:\data,D:\data\正确,D:data,D:\data\     abc,D::,D::\,D::\data均非法
      

  9.   

    为什么要用正则表达式?直接用API多好
    File f = new File("d::/");
    System.out.println(f.isDirectory() | f.isFile());
      

  10.   


    //修改了对于这样\\ a \\这样的匹配。我想这次满足你的要求了
    System.out.println("D::\\".matches("(?i)^[a-z]:((?<!\\s)[/\\\\](?!\\s)[\\w\\u4e00-\\u9fa5\\s]*)*$"));
      

  11.   

    不支持特殊字符,例如 D:\abc@# 则不行,
      

  12.   

    解决,正则是如下String regx = "(?i)^[a-z]:((?<!\\s)[/\\\\](?!\\s)([^:?*\"<>|]+)*)*$";
      

  13.   


    matches("[a-zA-Z](:/)[\\w/.]+")