Skip to main content
 首页 » 编程设计

c#之信用卡验证正则表达式

2024年06月03日12think

我在为 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}$