Windows路径的正则表达式

时间:2016-06-10 11:29:55

标签: java regex

作为强化修复的一部分,我们需要验证文件路径。例如,

  1. "C:/Users/<username>/sample1.txt"
  2. "C:\Users\<username>\sample1.txt"
  3. 我们尝试使用以下正则表达式来验证上述路径,但是当文件路径包含\时,我们最终会出错。 所以请建议有效的正则表达式,它可以接受文件路径中的斜杠。

    Validator.FilePath=.*[\\]\\[!"#$%&'()_*+,/:;<=>?@\\^`{|}~].*
    

4 个答案:

答案 0 :(得分:2)

您可以尝试:

MyKey
  • [a-zA-Z]:[\\\/](?:[a-zA-Z0-9]+[\\\/])*([a-zA-Z0-9]+\.txt) 用于驱动器号和[a-zA-Z]:
  • :匹配[\\\/]\
  • /用于文件夹名称。您可以在角色类中添加您可能需要的任何字符。我只使用(?:[a-zA-Z0-9]+[\\\/])*
  • a-zA-Z0-9用于文件名和([a-zA-Z0-9]+\.txt)扩展名 - 它与文件名匹配,并附带扩展名,并将其捕获。

答案 1 :(得分:0)

Validator.FilePath=(?:[a-zA-Z]\\:|[\\\\\\\\|/]+[\\w\\.]+)[\\\\|/]?([\\w]+[\\\\|/])*[\\w]*(\\.\\w+)$

答案 2 :(得分:0)

FWIW,这是我很久以来用来验证任何有效Windows路径+文件的模式:

^
  (?<drive>[a-z]:)?
  (?<path>(?:[\\]?(?:[\w !#()-]+|[.]{1,2})+)*[\\])?
  (?<filename>(?:[.]?[\w !#()-]+)+)?[.]?
$

它容纳存在或不存在的驱动器号,可选的根标记,相对路径(“。”和“ ..”)以及文件和文件夹名称中的句点。它还使通过捕获组标签提取信息变得简单/容易。唯一需要注意的是,它需要对其通过的路径名中的第二个句点进行二次检查。

Regex 101 example

答案 3 :(得分:0)

这是我的解决方案:

^(?i)\s*([a-z]:/?)?(?:[^?*:;|<>\r\n\\]*)(/\1*|\1*)(.\1*)*[^.]$

满足:

c:
c:/
c:notepad++
c:/notepad++
notepad
C:/not epad++/notepad++/notepad++.exe.txt.xaml
C:notepad++/notepad++/notepad++.exe.txt.xaml
C:notepad++//notepad++/notepad++...exe.txt.xaml
C:notepad++/notepad++
.xaml
 c:notepad++/
 C:/notepad++/notepad++/
 C:/notepad++/notepad++/a
 C:/notep ad++/notepad++

但不是:

C:notepad++/notepad++/notepad++.exe.txt.