我正在编写用于将信用卡输入数据库的代码 . 我知道有正则表达式可用于确定卡的类型(Visa,MasterCard等) . 例如,Visa的正则表达式是 /^4[0-9]{12}(?:[0-9]{3})?$/
. 我只处理Visa,MasterCard,Discover Card和American Express,没有其他卡支持 .
我的问题是:我应该从用户那里收集卡片类型并将其存储在数据库中,还是从卡片编号中获取卡片类型,而不是将其存储在数据库中?换句话说,有没有例如Visa卡与正则表达不匹配但仍然是Visa卡的情况?
这不是关于Luhn检查,而是关于确定卡类型的正则表达式 .
1 回答
是的,签证表达限制为13或16位,实际上Visa的范围从13到19位,尽管16是迄今为止最常见的 .
这里将对此进行深入讨论:Why do credit card forms ask for Visa, MasterCard, etc.?
当您发表评论时,您遇到了错误的用户输入问题,我根本不会问他们使用的是什么,并使用一组简单的前缀和长度正则表达式来识别卡的类型 . 然后,您可以将此值存储在数据库中,以便为将来的查询目的再次导出它 .