首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Isracard的RegEx (以色列卡)

Isracard的RegEx (以色列卡)
EN

Stack Overflow用户
提问于 2016-07-06 19:28:07
回答 4查看 1.1K关注 0票数 1

我需要一个正则表达式Isracard (以色列信用卡)。

将非常感谢帮助,或者可能是一些如何制作它的信息。

Isracard 8-9位数字格式。

例如。卡片图片- http://images.delcampe.com/img_large/auction/000/157/341/572_001.jpg

EN

回答 4

Stack Overflow用户

发布于 2016-07-06 19:37:38

我发现了对IsraCard的验证:

代码语言:javascript
运行
复制
<script>
    var cardValid=function(cardNo){    
    var sum = 0, iNum;
    for( var i in cardNo+='' ){
        iNum = parseInt(cardNo[i]);
        sum += i%2?iNum:iNum>4?iNum*2%10+1:iNum*2;
    }
    return !(sum%10);
  };
</script>


Asp vb script IsraCard Credit Card number Validation (8 or 9 digits)

<%
Function IsraCardCheck(strNumber)
    comp1 = "987654321"
    comp2 = strNumber
    srez = 0
    if len(comp2) < 9 then comp2 = "0" & comp2
    for i = 1 to 9 
        a = mid(comp1, i, 1)
        b = mid(comp2, i, 1)
        c = a * b
        srez = srez + c
    next

    if srez mod 11 = 0 then
        IsraCheck = true
    else
        IsraCheck = false
    end if
End Function 
%>

我只是从那里复制了代码,有关更多信息和细节,您可能需要检查链接本身:Anatomy of credit card number formats

票数 5
EN

Stack Overflow用户

发布于 2016-07-06 19:37:46

根据我所看到的here (没有任何关于以色列信用卡号开头的进一步指导),这应该是可行的

代码语言:javascript
运行
复制
(3640|4580)-?([0-9]{4}-?){3}
票数 4
EN

Stack Overflow用户

发布于 2016-07-06 20:57:57

一个简单的正则表达式来检查它是一个8位数字还是9位数字:

代码语言:javascript
运行
复制
^[0-9]{8,9}$

或者是否允许在数字之间使用空格或破折号。

代码语言:javascript
运行
复制
^[0-9](?:[ -]?[0-9]){7,8}$

例如,匹配:

代码语言:javascript
运行
复制
1234-5678-9
1234 5678
1 2 3 4 5 6 7 8 9
1-2-3-4-5-6-7-8
12-34 56-78 9

但纯正则表达式不能像f.e.那样进行计算。模数检查。

因此,需要额外的代码来提供更准确的验证。

Javascript示例代码片段:

代码语言:javascript
运行
复制
function checkIsracard(creditcardNo){
    if(! /^[0-9](?:[ -]?[0-9]){7,8}$/.test(creditcardNo.toString())) return false;
    let total = 0;
    let cardDigits = creditcardNo.toString().match(/[0-9]/g);
    cardDigits.forEach(function(digit, indx){
        total += parseInt(digit,10)*(cardDigits.length - indx);
    });
    return (total%11 === 0);
}

console.log('1234-5678-9:\t'+checkIsracard('1234-5678-9'));
console.log('1234 5679:\t'+checkIsracard('1234 5679'));
console.log('123456789:\t'+checkIsracard(123456789));
console.log('12345679:\t'+checkIsracard(12345679));
console.log('123456781:\t'+checkIsracard('123456781'));   // modulus check fail
console.log('12345671:\t'+checkIsracard('12345671'));     // modulus check fail
console.log('1234567:\t'+checkIsracard('1234567'));       // not enough digits
console.log('1234567890:\t'+checkIsracard('1234567890')); // too many digits

但如果问题是关于16 digit visa credit card numbers

对于这些,使用了更广泛使用的luhn-algorithm

所以这个算法会更复杂一些。

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

https://stackoverflow.com/questions/38222909

复制
相关文章

相似问题

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