验证字符串特定位置的数字和字母的格式

时间:2013-09-12 19:20:12

标签: c#

我有以下字符串字符,由两个字母后跟四个数字组成,后跟两个字母,例如xy1234xy。我需要能够确定用户条目是否符合此条件。

对于其他项目,我使用TakeSkip,因为如果有替代方案,我宁愿不使用Regix:

我过去曾经使用过这样的东西,但是中段有问题:

public static void MemberNumberInput(string checkNumberLetter)
{
IsValidInput = (checkNumberLetter.Take(2).All(char.IsLetter) &
(checkNumberLetter.Skip(2).All(char.IsDigit) & 
(checkNumberLetter.Take(2).All(char.IsLetter) & 
(checkNumberLetter.Trim().Length == 8))));
}
}

谢谢大家:

2 个答案:

答案 0 :(得分:5)

这样怎么样?

string myString = "xy1234xy";
if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{4}[A-Za-z]{2}$"))
{
    // Do something
}

^[A-Za-z]{2}[0-9]{4}[A-Za-z]{2}$

Regular expression visualization

Edit live on Debuggex

这是DEMO

答案 1 :(得分:1)

如果绝对不能使用正则表达式,我认为最直接的方法是逐个检查:

return checkNumberLetter.Length == 8 &&
  checkNumberLetter[0].IsLetter() &&
  checkNumberLetter[1].IsLetter() &&
  checkNumberLetter[2].IsDigit() &&
  checkNumberLetter[3].IsDigit() &&
  checkNumberLetter[4].IsDigit() &&
  checkNumberLetter[5].IsDigit() &&
  checkNumberLetter[6].IsLetter() &&
  checkNumberLetter[7].IsLetter();

您可以在for循环或一组LINQ查询中执行此操作,但我认为这是最简单,最直接的选项。