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

标签 c# regex

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

关于c# - 信用卡验证正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31090888/

相关文章:

c# - 奇怪,regex.split方法匹配一个null元素

c# - GAC 中的 MySql.Data,仍然是 SecurityException

php - 在 preg_match_all() 中需要一些关于正则表达式的帮助

java - 如何更改正则表达式来处理数据异常值?

php - 正则表达式的数字替换模式问题

regex - 如何编写执行以下操作的 grep 函数?

c# - 如何将 List<int> 转换为 string[]?

具有位置的大型排序集合的 C# 数据类型?

c# - 模型更改后如何更新 View ?

c# - 捕获外部进程输出