有效的常规正则表达式字符

时间:2017-03-01 07:15:19

标签: .net regex validation-controls

嗨我有一个正则表达式,现在表示失败。不确定是什么停止。

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

但由于某种原因,它没有服用。

请帮助使用与模式相匹配的有效文件名。

1 个答案:

答案 0 :(得分:0)

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

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

  • 前缀:可以是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