正则表达式验证文件名

时间:2010-09-02 10:20:21

标签: c# regex .net-2.0

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

2 个答案:

答案 0 :(得分:6)

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

应该这样做。

说明:我复制了您的字符列表并将其粘贴到negated character class[^...])中。我只需做两个小修改:转义结束括号(\])并将短划线放在字符串的末尾。

答案 1 :(得分:5)

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
}