正则表达式允许只有.txt或没有扩展名的文件

时间:2013-09-21 18:10:28

标签: regex

我需要一个正则表达式,只允许使用.txt或没有扩展名的文件。

例如:c:\document\assignment\test.txtc:\document\assignment\testing

这就是我到目前为止:

^[a-zA-Z]:(\\\\[a-zA-Z0-9\\p{Space}[\\p{Punct}&&[^\\Q\\/:*?\"<>|\\E]]\\(\\)]+[^\\.])+(?=(\\.txt|\\.TXT))(\\.txt|\\.TXT)$

上述内容仅适用于.txt,但不适用于没有扩展名的文件。

1 个答案:

答案 0 :(得分:0)

正则表达式需要不区分大小写的标志,并且应该适用于大多数正则表达式引擎风格。

^(?:[a-z]:|\\|\.{1,2})(?:\\[^<>:"/\\|?*.]+)+(?:\.txt)?$

REY

说明

正则表达式通过匹配以下子模式来生成匹配。

  • 字符串的开头
  • 查找路径的开头:驱动器号,unc名称的反斜杠或相对路径的一个或两个句点
  • 至少一个以反斜杠开头并遵循基本约定的路径项 Naming Files, Paths, and Namespaces
  • 可选择以.txt
  • 结尾
  • 字符串的结尾。

如果您不需要unc路径或相对路径,则可以通过将第一个捕获组更改为a-z来简化表达式。您可以通过更改最后一个捕获组来添加更多扩展。例如,(?:\.(txt|exe|com)?将匹配.txt.exe.com