2

我想检查文本框是否具有有效的目录名称。因为我将使用此文本框值创建一个目录。

另一件事,该值必须至少包含 3 个字符,并且不能超过 20 个字符。

我该怎么做?

4

3 回答 3

5

Path.GetInvalidPathChars是您可以找出哪些字符无效的地方。我建议您使用正则表达式,而不是使用正则表达式,Path.GetFullPath因为这将为您验证路径:它总是会比您尝试自己滚动的任何内容做得更好,并且随着规则随时间的变化而保持最新。

至于它的长度,使用Path类的方法来获取要检查的路径的组件。

于 2013-07-22T16:44:23.253 回答
3

不需要RegEx,这是一种浪费。

public bool ValidName(string dirName)
{
    char[] reserved = Path.GetInvalidFileNameChars();

    if (dirName.Length < 3)
         return false;
    if (dirName > 20)
         return false;

    foreach (char c in reserved)
    {
         if (dirName.Contains(c))
             return false;
    }

    return true;
}

RegEx 不是特别有效,在这里也不是必需的。只需检查边界,然后确保字符串不包含任何保留字符,一旦发现错误就返回 false。

于 2013-07-22T16:40:22.177 回答
1

简单的

这是您应该使用的正则表达式。

^[0-9A-Za-Z_-]{3,20}$

"^"means starts with the characters defined in [] brackets
"[]" represents list of allowed characters
"0-9" represents that numbers from 0-9 can be used
"A-Z" uppercase letters from A to Z
"a-z" lowercase letters from a to z
"_" underscore
"-" dash
"{}" represents limitations
"{3,20}" - min 3 characters max 20
"$" ends with the characters defined in []

如果您不使用 ^$ ,它将在字符串中搜索这些字母的组合,因此字符串可以是 30 个字符并且它是有效的。

我希望这有帮助

于 2013-07-22T16:40:26.030 回答