【问题标题】:Regex to validate filename [closed]正则表达式验证文件名 [关闭]
【发布时间】:2010-09-02 10:20:20
【问题描述】:

如果文件名有其他字符,那么这个a-zA-Z0-9!@$%^&*()_+=-[]{}';,. 我们必须用某个字符替换它们或删除它们。

【问题讨论】:

    标签: c# regex .net-2.0


    【解决方案1】:
    resultString = Regex.Replace(subjectString, @"[^a-zA-Z0-9!@$%^&*()_+=[\]{}';,.-]", "X");
    

    应该这样做。

    解释:我复制了您的字符列表并将它们粘贴到negated character class ([^...]) 中。我只需要进行两个小修改:转义右括号 (\]) 并将破折号放在字符串的末尾。

    【讨论】:

      【解决方案2】:
      using System.Linq;
      using System.IO;
      
      string path = ...;
      
      IEnumerable<char> invalidChars = Enumerable.Concat(
          Path.GetInvalidFileNameChars(),
          Path.GetInvalidPathChars());
      
      foreach (char c in invalidChars)
      {
          path = path.Replace(c, ''); // or any char you want
      }
      

      【讨论】:

      • +1 用于指定 Path.GetInvalid[FileName|Path]Chars()