验证文本框已指定格式
本文关键字:定格 格式 文本 验证 | 更新日期: 2023-09-27 18:15:50
如何验证以下格式的文本框输入?格式为:
"123dg-erf53-f5d5s-55dh5-gs45j"
您可以使用MaskedTextBox,或者如果它的功能不够,创建一个处理程序到它的TextChanged事件,并使用正则表达式来验证文本
这里有一个正则表达式来验证它:
"(([0-9a-zA-Z]){5}-){4}([0-9a-zA-Z]){5}"
使用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的解决方案,因为它比我的解决方案更适合初始任务。