1

我需要一个正则表达式,它应该只允许带有.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没有扩展名的文件,但不适用于没有扩展名的文件。

4

1 回答 1

0

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

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

雷伊

解释

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

  • 字符串的开始
  • 查找路径的开头:驱动器号、unc 名称的反斜杠或相对路径的一个或两个句点
  • 至少一个以反斜杠开头并遵循 命名文件、路径和命名空间的基本约定的路径项。
  • 可选择结束于.txt
  • 字符串的结尾。

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

于 2013-09-21T18:33:05.010 回答