2008-11-01 5 views
10

사용자가 제출하기를 누르기 전에 신용 카드의 수표 유효성을 검사하는 라이브러리 또는 JavaScript 스 니펫이있는 사람이 있습니까?신용 카드의 클라이언트 측 유효성 확인

+0

왜 신용 카드 정보를 확인하는 데 자바 스크립트를 사용하고 싶습니까? –

+2

@ gabriel1836에는 신용 카드 번호가 허용되는 숫자 세트에 있는지 알 수있는 알고리즘이 있습니다. 100 % 확인은 아니지만 거의 모든 무작위 실수를 배제합니다. – torial

+0

luhn-10 알고리즘이라고합니다. – mdec

답변

10

은 아마 영업 이익도 더 이상이 스레드를 수행하지 않지만이 다른 사람에게 도움이 될 수 있습니다

http://jquerycreditcardvalidator.com

그것은 카드의 종류를 확인, 모드에 대한 길이와 검사의 유효성을 검사합니다 10 Luhn 알고리즘.

7

당신은 Luhn algorithm으로 16 자리 카드 번호를 확인하기 위해이 코드를 사용할 수 있습니다

function validateCardNumber(number) { 
    var regex = new RegExp("^[0-9]{16}$"); 
    if (!regex.test(number)) 
     return false; 

    return luhnCheck(number); 
} 

function luhnCheck(val) { 
    var sum = 0; 
    for (var i = 0; i < val.length; i++) { 
     var intVal = parseInt(val.substr(i, 1)); 
     if (i % 2 == 0) { 
      intVal *= 2; 
      if (intVal > 9) { 
       intVal = 1 + (intVal % 10); 
      } 
     } 
     sum += intVal; 
    } 
    return (sum % 10) == 0; 
} 
1

Luhn formula 신용 카드 유효성 검사에서 가장 인기있는 알고리즘이다. 그리고 도서관을 찾고있는 단어 algorithm을 두려워하지 마십시오. 엄청나게 이해하기 쉽습니다. 위키 설명으로부터,이 알고리즘은 3 단계로 분할 될 수있다 : 체크 디지트, 우 이동은 가장 오른쪽 자리에서

  • 초마다 숫자의 두 배의 값; 이 이중 연산의 곱이 9보다 큰 경우 (예 : 8x2 = 16), 제품의 숫자 (예 : 16 : 1 + 6 = 7, 18 : 1 + 8 = 9)를 합치십시오.
  • 모든 숫자의 합계를 취하십시오.
  • 모듈로 10의 합계가 0 인 경우 (합계가 0으로 끝나는 경우), 수는 Luhn 수식에 따라 유효합니다. 그렇지 않으면 이 유효하지 않습니다.

여기에 제 초안이 있습니다. (또한 Luhn formula라고도 함)

function luhn(anum){ 
    anum = anum+''; 
    var sum = 0, 
     max = anum.length - 1; 
    //From the rightmost digit, which is the check digit, moving left 
    for(var j=max;j>=0;j--){ 
     var digit = parseInt(anum[j]); 
     //Take the sum of all the digits 
     if((max - j) & 1){ 
      //double the value of every second digit 
      var add = digit * 2; 
      //if the product of this doubling operation is greater than 9 , 
      //then sum the digits of the products 
      sum += add < 10 ? add : 1 + add % 10; 
     }else{ 
      sum += digit; 
     } 
    } 
    //If the total modulo 10 is equal to 0 (if the total ends in zero) 
    //then the number is valid according to the Luhn formula;else it is not valid. 
    return sum % 10 === 0; 
} 

luhn(79927398713) -> true 
3

Luhn 알고리즘은 식별 번호 (예를 들면 신용 카드 번호, IMEI)의 다양성을 확인하는 것이 유용하다.

다른 사람들이 이미 노출했기 때문에 설명을 생략하지만 가장 빠른 자바 스크립트 구현을 보려면 here을 참조하십시오.

소스 연결

function luhn(array) { 
    return function (number) { 
    let len = number ? number.length : 0, 
     bit = 1, 
     sum = 0; 

    while (len--) { 
     sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]]; 
    } 
    return sum % 10 === 0 && sum > 0; 
    }; 
}([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]); 

주 (또한 자바 스크립트 2,015라고도 함) ES6 언어입니다 ... 간단히 말해, 그러나에 transpiled되어 ES5 (index.js 참조)과는 완전히 단위 테스트를 거쳤습니다.

또한 브라우저 및/또는 node.js에서 사용할 수 있습니다.

벤치 마크 및 기타 구현은 높은 성능을 확인하기 위해 jsperf에 있습니다.

이제 링크 된 코드 (예 : repository)를 사용하기 만하면됩니다.

그렇지 않으면 ... bower를 통해 설치

bower install luhn-alg 

또는 npm를 통해

...
npm install luhn-alg 


면책 조항 : 나는 luhn-alg 패키지의 저자입니다.

관련 문제