0

我需要一个正则表达式,它将显示一个字符串以一个字符(az)开头,并且后跟至少一个数字。

我努力了...

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

我的测试数据是...

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

问题是最后两行应该失败但不要,我不确定问题是我的正则表达式还是我的 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匹配 forZZ12345b5533匹配G4b5533.

正如它所提到的,{1}是多余的。

我相信你应该有

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

在你的代码中。

于 2012-09-17T14:47:31.477 回答
-1

经过重新思考(并睡个好觉),我想出了这个......

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

• 必须以字符 az 开头(不区分大小写)

• 第一个字符必须后跟至少一个数字

• 最后一个字符必须是数字(以防止“A1234A”或“A1A”匹配)

感谢 Vladimir 和 jornak 的所有帮助。

于 2012-09-18T08:22:00.890 回答