【发布时间】:2015-02-08 00:19:30
【问题描述】:
我正在编写将信用卡输入数据库的代码。我知道有一些正则表达式可用于确定卡的类型(Visa、MasterCard 等)。例如,Visa 的正则表达式是/^4[0-9]{12}(?:[0-9]{3})?$/。我只处理 Visa、MasterCard、Discover Card 和 American Express,不支持其他卡。
我的问题是:我应该从用户那里收集卡类型并将其存储在数据库中,还是从卡号导出卡类型,并且不将其存储在数据库中?换句话说,是否存在任何情况,例如,Visa 卡与正则表达式不匹配,但仍然是 Visa 卡?
这不是关于 Luhn 检查,而是关于确定卡片类型的正则表达式。
【问题讨论】:
-
对于它的价值,我见过的系统会询问用户并存储它。这不是你想猜错的事情来节省几个字节。
-
您应该只从卡号派生卡类型。没有来自任何其他复选框的信息可以为您提供信息。监控卡号并及时修改您的正则表达式。我认为不会有太大变化。但是,您可以稍微放松一下正则表达式以捕捉错字。
-
在stackoverflow.com/questions/72768/… 参考相关问题的优秀答案@ 提示并保存颁发者是很好的,而不是从 REGEX 模式确定颁发者。
-
谢谢大家。我不关心节省空间,但我想避免人们输入 Visa 卡然后选择 MasterCard。这在过去发生了很多,因为一些老客户似乎认为一切都是万事达卡。
-
@NielsCastle 你只是想让 everything 离题,不是吗?节省实际尝试回答问题的时间。
标签: regex validation credit-card