我需要一个正则表达式,它会发出一个字符串以一个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++;
}
}
答案 0 :(得分:4)
您的代码似乎错过了^
,因此Z12345
匹配ZZ12345
和b5533
匹配G4b5533
。
正如提到的那样,{1}
是多余的。
我相信你应该
string sPattern = "^[a-zA-Z]\\d+$";
代码。
答案 1 :(得分:-1)
经过重新思考(和良好的夜晚睡眠)后,我想出了这个......
^[A-Za-z]{1}\d+.$*[0-9]$
•必须以字符a-z(不区分大小写)
开头•第一个字符后面必须至少有一个数字
•最后一个字符必须是数字(以防止“A1234A”或“A1A”匹配)
感谢Vladimir和jornak的所有帮助。