如何以下列格式验证文本框输入?格式为:
"123dg-erf53-f5d5s-55dh5-gs45j"
答案 0 :(得分:1)
您可以使用MaskedTextBox,或者如果功能不够,请为其TextChanged事件创建处理程序,并使用正则表达式验证文本。
答案 1 :(得分:0)
这是验证它的正则表达式:
"(([0-9a-zA-Z]){5}-){4}([0-9a-zA-Z]){5}"
答案 2 :(得分:0)
使用Otiels正则表达式,您可以执行以下操作:
private void textBox1_TextChanged(object sender, EventArgs e)
{
string regex = "(([0-9a-zA-Z]){5}-){4}([0-9a-zA-Z]){5}";
this.textBox1.BackColor = Regex.IsMatch(this.textBox1.Text, regex) && !textBox1.Text == string.Empty ?
System.Drawing.Color.Green :
System.Drawing.Color.Red;
if (this.textBox1.Text == string.Empty)
{
this.textBox1.BackColor = System.Drawing.Color.White;
}
else
{
this.textBox1.ForeColor = System.Drawing.Color.White;
}
}
在TextBox_TextChanged处理程序中(我的TextBox名称是textBox1)。 这可以很容易地添加到自定义控件中 - 从TextBox继承,附加到TextChanged事件并用此替换textBox1代码。
这样您就可以重复使用该控件。 您还可以添加一个属性,如公共字符串ValidationRegex {get;组;所以你可以传递不同的正则表达式,并能够验证任何东西,而不仅仅是许可证密钥。
MaskedTextBox也是一个有效的选项,具体取决于您需要实现的目标。
更新:上面的正则表达式将匹配一个包含5个组的字符串,每个组有5个字符,可以是字母(大写或小写)或数字。由于对此有评论,因此应修改正则表达式以容纳具有不同字符数的组。这是:
string regex = "[0-9a-zA-Z]{6}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{5}-[0-9a-zA-Z]{6}";
这个正则表达式(尽管比Otiels提出的要长很多)将允许你控制每组中的字符数。 只需在上面的代码中替换它,它应该适用于一个包含6个字符的字符串,后跟两个5个字符的组,后跟一个6个字符的组。 顺便说一句,这将是我最初的提议(除了在原始答案中我在每个量词中都有5个),但我真的赞成Otiels解决方案对于初始任务比我的更优雅。