【发布时间】:2015-09-14 10:52:17
【问题描述】:
我在为 Visual C# 中的信用卡号验证程序创建正则表达式时遇到了一些问题。 卡片的数字需要用破折号(-)分隔,第一个数字必须是 1-9,第二组数字必须是 1-3。例如 2204-1232-9746-5558 或 1111-1111-1111-1111。
这是我目前所拥有的:
Regex card = new Regex(@"^[1-9][0-9]{2}-[1-3]{3}-[0-9]{3}-[0-9]{3}$");
string myCard = txtCard.Text;
Match m = card.Match(myCard);
if(m.Success)
{
MessageBox.Show("The card number entered is vaild");
}
else
{
MessageBox.Show("The card number entered is an invaild card number...");
}
txtCard.Clear();
txtCard.Focus();
我尝试的每个卡号都给我相同的结果,该号码无效。 谁能引导我朝着正确的方向前进? 非常感谢!
【问题讨论】:
-
你在哪里告诉正则表达式你期望 4 位数字,而不仅仅是 1 ?
-
并非所有信用卡都遵循相同的数字模式。除非你打算强迫你的用户遵循你的模式,否则你真的应该考虑另一种方法,或者至少是不同的正则表达式