Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何验证文本框?_C#_Winforms_Validation - Fatal编程技术网

C# 如何验证文本框?

C# 如何验证文本框?,c#,winforms,validation,C#,Winforms,Validation,我有一个文本框,用户将在其中按以下方式输入数据。 e、 g.1.2-2012-2 但也可能是,;12.5-2010-4第一部分重点 我的第一个方法是一个MaskedTextBox,但由于第一部分没有确定的大小,我不能使用它。 现在我想验证文本框。i、 e.我会让用户输入他/她想要的内容,但最后我想知道他/她是否以正确的方式输入。 e、 g.如果用户键入的a12.4/2012^14不正确,我会知道。 我不知道如何将这个想法转换成代码,所以请有人来指导我。 如果有其他方法。我想匹配的文本框无法匹配不

我有一个文本框,用户将在其中按以下方式输入数据。 e、 g.1.2-2012-2 但也可能是,;12.5-2010-4第一部分重点 我的第一个方法是一个MaskedTextBox,但由于第一部分没有确定的大小,我不能使用它。 现在我想验证文本框。i、 e.我会让用户输入他/她想要的内容,但最后我想知道他/她是否以正确的方式输入。 e、 g.如果用户键入的a12.4/2012^14不正确,我会知道。 我不知道如何将这个想法转换成代码,所以请有人来指导我。
如果有其他方法。

我想匹配的文本框无法匹配不一致的输入,所以最好在这里使用正则表达式

你可以使用这个正则表达式

^\d+(\.\d+)?-\d+-\d+$
然后,您可以检查输入,如

if(Regex.IsMatch(input,regex))
     //valid
^描述字符串的开头

\d表示一个数字,即0-9

+将前面的字符1匹配多次..因此\d+将1匹配多个数字

??匹配前面的字符0到1次。所以\.\d+?匹配a。后跟1到多个数字(可选)

$表示字符串的结尾


我们使用“^”和“$”指定输入的开始和结束,否则它可以匹配中间的输入

我猜匹配的文本框无法匹配不一致的输入,所以最好在这里使用正则表达式

你可以使用这个正则表达式

^\d+(\.\d+)?-\d+-\d+$
然后,您可以检查输入,如

if(Regex.IsMatch(input,regex))
     //valid
^描述字符串的开头

\d表示一个数字,即0-9

+将前面的字符1匹配多次..因此\d+将1匹配多个数字

??匹配前面的字符0到1次。所以\.\d+?匹配a。后跟1到多个数字(可选)

$表示字符串的结尾

我们使用“^”和“$”指定输入的开始和结束,否则它可以匹配中间的输入

您可以使用TextChanged事件和正则表达式:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var myRegex = new Regex(@"^(\d)+\.\d-(\d){4}-\d$");

    if (myRegex.IsMatch(textBox1.Text))
    {
        //Validation is ok
    }
    else
    {
        //Validation isn't ok
    }
}
我已经测试了这段代码。这很有效。唯一一件事我不知道你的模式,但上面一个应该工作

如果。是可选的,然后使用此模式:@^\d+\.\d*-\d{4}-\d$

您可以使用TextChanged事件和正则表达式:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var myRegex = new Regex(@"^(\d)+\.\d-(\d){4}-\d$");

    if (myRegex.IsMatch(textBox1.Text))
    {
        //Validation is ok
    }
    else
    {
        //Validation isn't ok
    }
}
我已经测试了这段代码。这很有效。唯一一件事我不知道你的模式,但上面一个应该工作



如果。是可选的,然后使用此模式:@^\d+\.\d*-\d{4}-\d$

这是什么技术,例如winforms、wpf?您尝试了什么..这是什么输入..会。始终存在于输入中。@Some1.Kill.the.DJ不总是这是什么技术,例如winforms、wpf?您尝试过什么..输入是什么..会。始终存在于输入中。@Some1.Kill.the.DJ不总是可以解释这会做什么?因此,这意味着如果在第三部分中,我只希望用户输入2位数字,我键入\d\d???的。是否可选?我现在做什么?如果需要2位数字,请键入\d{2}。看到我的回答了吗?你能解释一下这到底是怎么回事吗?这意味着如果在第三部分中,我只想让用户输入两位数字,我就键入\d\d。是否可选?我现在做什么?如果需要2位数字,请键入\d{2}。请看我的回答。是可选的,我现在做什么?如果。是否可选使用星号“*”:\.*或在您的情况下使用@^\d+\.\d*-\d{4}-\d$还有一个问题,如果我希望第三部分只包含小于12的数字,该怎么办?让我们来回答这个问题。是可选的,我现在做什么?如果。是否可以选择使用星号“*”:\.*或者在您的情况下使用@^\d+\.\d*-\d{4}-\d$还有一个问题,如果我希望第三部分只包含小于12的数字,该怎么办?让我们来回答