正则表达式帮助:一个字符,后跟至少一个数字

时间:2012-09-17 14:17:13

标签: regex

我需要一个正则表达式,它会发出一个字符串以一个chaecter(a-z)开头,后跟至少一个数字。

我试过......

  

^[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++;
        }
    }

2 个答案:

答案 0 :(得分:4)

您的代码似乎错过了^,因此Z12345匹配ZZ12345b5533匹配G4b5533

正如提到的那样,{1}是多余的。

我相信你应该

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

代码。

答案 1 :(得分:-1)

经过重新思考(和良好的夜晚睡眠)后,我想出了这个......

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

•必须以字符a-z(不区分大小写)

开头

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

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

感谢Vladimir和jornak的所有帮助。