1

ユーザーが次の方法でデータを入力するテキストボックスがあります。例:1.2-2012-2しかし、それも可能性があります。12.5 -2010-4(前編を重視)最初のアプローチはでしたMaskedTextBoxが、前編はサイズが決まっていないので使えません。次に、テキストボックスを検証します。つまり、ユーザーに入力したい内容を入力させますが、最終的には、ユーザーが正しい方法で入力したかどうかを知りたいと思います。たとえば、ユーザーがa12.4 / 2012 ^ 14(これは正しくありません)と入力した場合、私は知っているでしょう。このアイデアをコードに変換する方法がわからないので、誰かが私を案内してくれませんか。別のアプローチがある場合。

4

2 に答える 2

3

一致したテキストボックスは一貫性のない入力と一致できないと思うので、ここで正規表現を使用することをお勧めします。

この正規表現を使用できます

^\d+(\.\d+)?-\d+-\d+$

次に、次のように入力を確認できます

if(Regex.IsMatch(input,regex))
     //valid

^文字列の開始を示します

\d数字、つまり0〜9を表します

+前の文字に1から何度\d+も一致します。したがって、1から多くの桁に一致します。

?前の文字に0から1回(\.\d+)?一致します。したがって、オプション.で1から数桁の後に続く文字に一致します。

$文字列の終わりを示します

を使用し^$、入力の開始と終了を指定します。それ以外の場合は、その間の入力と一致する可能性があります。

于 2013-02-02T17:55:12.963 に答える
1

TextChangedイベントとRegex式を使用できます。

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
    }
}

このコードをテストしました。動作します。私があなたのパターンを正確に知らない唯一のことは、1つ以上がうまくいくはずです。

もしも 。オプションである場合は、次のパターンを使用します。@"^(\d)+(\.\d)*-(\d){4}-\d$"

于 2013-02-02T18:56:12.653 に答える