我在为 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();
我尝试的每个卡号都给我相同的结果,该卡号无效。 谁能引导我朝着正确的方向前进? 非常感谢!
请您参考如下方法:
您的问题出在正则表达式中。应该是
^[1-9][0-9]{3}-[1-3]{4}-[0-9]{4}-[0-9]{4}$
{4} 是 [] 中应该存在的位数。
您还应该注意,第二个 [1-3] 对于信用卡来说是不正常的。至少从我的银行。
我会把上面的改成这个。您可能需要检查速度,以及这是否完全符合您的要求。
^[1-9][0-9]{3}(-[0-9]{4}){3}$