作为强化修复的一部分,我们需要验证文件路径。例如,
"C:/Users/<username>/sample1.txt"
"C:\Users\<username>\sample1.txt"
我们尝试使用以下正则表达式来验证上述路径,但是当文件路径包含\
时,我们最终会出错。
所以请建议有效的正则表达式,它可以接受文件路径中的斜杠。
Validator.FilePath=.*[\\]\\[!"#$%&'()_*+,/:;<=>?@\\^`{|}~].*
答案 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 !#()-]+)+)?[.]?
$
它容纳存在或不存在的驱动器号,可选的根标记,相对路径(“。”和“ ..”)以及文件和文件夹名称中的句点。它还使通过捕获组标签提取信息变得简单/容易。唯一需要注意的是,它需要对其通过的路径名中的第二个句点进行二次检查。
答案 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.