7

はじめに:正規表現を使い始めたばかりですが、正規表現でが起こっているのかを理解するのに非常に苦労しました。ただのヘッズアップ。

プロジェクトの場合、A)空の文字列(C#では「 "」)、またはB)10桁のいずれかを使用する正規表現を開発しようとしています。私は10桁の部分を達成する方法を理解することができました:

"^[0-9X]{10}$"

...しかし、「空の文字列」または「部分」ではありません。私が想像するのは次のようなものです:

"^[]$|^[0-9X]{10}$"

明らかにそれはうまくいきませんが、この問題に関するトピックはかなりたくさんありますが、うまくいくものを書く方法がわかりません。

質問:

A)指定された文字列がstring.Empty( ""ではなく)または正確に10桁の場合にtrueを返す正規表現とは何ですか?

B)それがどのように機能するかを正確に説明してください。私が学ぼうとしていないわけではありません(^$正確な文字列照合のアンカーであり、それ|がOR演算子であることがわかりました...)、正規表現が自然に私に届かないようです。 。まだ、私はそれらを使用しなければならない状況にあります。

4

4 に答える 4

24
(^$)|(^\d{10}$)

最初のオプションは空の文字列と一致し、2番目のオプションは10桁と一致します。

Xが何のためにあるのかわかりません。ただし、16進文字列を探している場合を除き、その場合は次のようにします。

(^$)|(^[0-9a-fA-FxX]{10}$)
于 2013-01-22T17:13:30.937 に答える
3
^$|^[0-9X]{10}$

^開始に一致することを$意味し、間に何もないので終了に一致することを意味し、何にも一致しません。何かあると、これは一致しません

|選択肢間の交互演算子です

于 2013-01-22T17:09:28.190 に答える
1
 string a = "0123456789";
 string b = "";
 string reg = @"^(|\d{10})$";

 if ( Regex.IsMatch( a, reg ) && Regex.IsMatch( b, reg ) ) {
     Console.WriteLine( "Matched" );
 }

\d[0-9]
{10}は、正確に10倍に相当します
|。OR演算子
^は開始、$終了
です。角かっこは、OR演算を開始と終了の間の0桁または10桁に制限します。

于 2013-01-22T17:26:03.483 に答える
0

以下の正規表現を試してください...それは動作します...

        if (Regex.IsMatch(textBox1.Text, @"^(?!\s*$).+")) //Check Not Empty String 
        {
            if (Regex.IsMatch(textBox1.Text, @"^\d{10}$")) // Check ten digits - Not allowed Alphanumeric
            {
                MessageBox.Show("find Ten digits");
            }
            else
            {
                    MessageBox.Show("Error");
            }
        }
        else
        {
            MessageBox.Show("Empty String Found");
        }
于 2013-01-22T17:13:56.057 に答える