我想检查一个文本框是否有一个有效的目录名。因为我将使用此文本框值创建一个目录。
另一方面,该值必须至少包含3个字符,且不能超过20个字符。
我该怎么做?
答案 0 :(得分:4)
Path.GetInvalidPathChars
是您可以找到哪些字符无效的地方。我建议您使用Path.GetFullPath
而不是使用正则表达式,因为这将为您验证路径:总是会比您尝试自己动手的任何事情做得更好,并且会随着规则保持最新状态随时间而变化。
至于它的长度,请使用Path
类的方法来获取要检查的路径的组件。
答案 1 :(得分: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。
答案 2 :(得分:0)
易
这是你应该使用的正则表达式。
^[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个字符,它将是有效的。
我希望这会有所帮助