0

文字列が1つのchaecter(az)で始まり、その後に少なくとも1つの数字が続くことをテキストで表す正規表現が必要です。

私が試してみました...

^[a-zA-Z]{1}\d+

私のテストデータは...

a1234 (pass)
B123444434 (pass)
Z098745 (pass)
ZZ12345 (fail)
G4b553b3 (fail)

問題は、最後の2行が失敗することですが、失敗することはありません。問題が私の正規表現なのか、私のc#(下記)なのかわかりません。

    int pass = 0;
    int fail = 0;

    string[] testdata = 
    {
        "a1234", 
        "B1234", 
        "Z098745", 
        "ZZ12345", 
        "G4b5533", 
    };

    string sPattern = "[a-zA-Z]{1}\\d+";

    foreach (string s in testdata)
    {
        if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern))
        {
            pass++;
        }
        else
        {
            fail++;
        }
    }
4

2 に答える 2

4

^コードを見逃しているようですので、にZ12345一致しZZ12345、にb5533一致しG4b5533ます。

そして、それが言及されたように、{1}冗長です。

私はあなたが持っているべきだと信じています

string sPattern = "^[a-zA-Z]\\d+$";

あなたのコードで。

于 2012-09-17T14:47:31.477 に答える
-1

再考した後(そしてぐっすり眠った後)、私はこれを思いついた...

^[A-Za-z]{1}\d+.$*[0-9]$

•文字azで始める必要があります(大文字と小文字は区別されません)

•最初の文字の後には、少なくとも1つの数字が続く必要があります

•最後の文字は数字である必要があります(「A1234A」または「A1A」の一致を防ぐため)

ウラジミールとヨルナックのすべての助けに感謝します。

于 2012-09-18T08:22:00.890 に答える