首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查卡是VISA还是VISAElectron

检查卡是VISA还是VISAElectron
EN

Stack Overflow用户
提问于 2014-03-03 11:24:30
回答 1查看 2.4K关注 0票数 2

我怎样才能检查信用卡是签证借记卡还是签证电子卡?我找到了这个例子,但我对信用卡算法一无所知。

我知道这些功能是如何工作的,我只是问我如何检查它是签证电子卡还是签证借记卡。目前它只支持VISA借方,但它需要检查VISA电子邮件。

代码语言:javascript
运行
复制
$cards = array(
    "visa" => "(4\d{12}(?:\d{3})?)",
    "visaelectron" => "??????????????????????????",
    "amex" => "(3[47]\d{13})",
    "jcb" => "(35[2-8][89]\d\d\d{10})",
    "maestro" => "((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)",
    "solo" => "((?:6334|6767)\d{12}(?:\d\d)?\d?)",
    "mastercard" => "(5[1-5]\d{14})",
    "switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\d?)",
);

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-03 11:25:59

您找到的数组包含正则表达式

您可以循环遍历这个数组,并检查所提供的值是否匹配某个正则表达式,如果匹配,您就知道他们使用了哪种类型的卡。

就像这样:

代码语言:javascript
运行
复制
$cards = array(
    "visa" => "(4\d{12}(?:\d{3})?)",
    "amex" => "(3[47]\d{13})",
    "jcb" => "(35[2-8][89]\d\d\d{10})",
    "maestro" => "((?:5020|5038|6304|6579|6761)\d{12}(?:\d\d)?)",
    "solo" => "((?:6334|6767)\d{12}(?:\d\d)?\d?)",
    "mastercard" => "(5[1-5]\d{14})",
    "switch" => "(?:(?:(?:4903|4905|4911|4936|6333|6759)\d{12})|(?:(?:564182|633110)\d{10})(\d\d)?\d?)",
);

$card_number = '4242424242424242'; // some made up card number

$card_type = 'unknown';

foreach ($cards as $card => $pattern) {
    if (preg_match('/' . $pattern . '/', $card_number)) {
        $card_type = $card;
        break;
    }
}

echo $card_type;

编辑现在有关您的新要求‘签证电子’匹配。

签证通常以49,44或47维萨电子开始: 42,45,48,49

因此,您需要根据这些规则创建一个正则表达式,并将其添加到数组中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22145520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档