0

嗨,我有一个正则表达式,现在已经失败了。不知道什么在停止。

Regex regex = new Regex(@"^(([a-zA-Z]:)|(\\{2}\w+\\[\w- ]+[$])|(\\{2}\w+))(\\[\w-. ]*)*(.xml|.XML)$");

if (!regex.IsMatch(fuSource.PostedFile.FileName))
{
      Page.Validators.Add(new ValidatorHelper("Please select a valid Application XML input file."));
}

我传递的文件名是:

XX2 03-01-2017.xml

但由于某种原因,它没有采取。

请帮助提供与模式匹配的有效文件名..

4

1 回答 1

0

您可以在像这样的在线工具上测试您的正则表达式以自己尝试:
https ://regex101.com/r/UX9TjE/1

基本上,您的正则表达式匹配文件名中的 3 个部分:

  • 前缀:可以是三样东西
    • 类似 Windows 的驱动器名称:c:Z:
    • 带有参数的 Windows 共享驱动器:\\shared\user$
    • Windows共享驱动器:\\shared
  • 名称(注意:可以为空,即零长度):
    • 它包括文件的路径,使用反斜杠,它可以有空格:
    • \my\path\my file
  • 扩展名:.xml.XML

恕我直言,这个正则表达式不是很好,这里有一些示例匹配:

c:\path\\XX2 03-01-2017.xml

\\nas\user$\XX2 03-01-2017.xml

\\network_shared\.xml

\\a.XML

你可以在这里看到为什么每一个都匹配:
https ://regex101.com/r/UX9TjE/2

于 2017-03-01T08:46:34.873 回答