정규식으로 신용 카드를 확인하는 올바른 방법은 무엇입니까? 사용할 톤이 온라인에 있다면. 확인하는 방법이 없다면?정규식을 사용한 신용 카드 확인?
답변
How can I use credit card numbers containing spaces?은 필요한 모든 것을 포함합니다.
- 편집 :
Infact는, 나는 약간 자신에 동의하고 클리 터스에 동의합니다. 신용 카드 (IMHO)의 특정 유형을 자세히 확인하지 않고 가능한 한 많이 유효성을 확인한 후 보내십시오. 그리고 (잘하면)이 유효성 검사는 자바 스크립트에서 수행되어야하며, 서버를 빠르게 수행하고, 서버에서 이중 체크 (JavaScript가 비활성화 된 사람들)를 수행해야합니다.
- 이전 응답 :
귀찮게하지 마십시오. 실제로 지불을 시도 할 때 공급자가 확인하도록하십시오. 시도하고 스스로 확인하는 정당한 이유가 없습니다. 당신은 정말로 그것을 좋아한다면 this을 사용할 수 있습니다.
나는 당신이 Luhn Algorithm을 찾고 생각합니다. 다양한 식별 번호의 유효성을 검사하는 데 사용되는 간단한 체크섬 공식입니다.
사전 유효성 확인의 정확성 정도에 따라 달라집니다. 할 수있는 모든 것을 검증하려면 카드의 마지막 숫자를 입력하고 입력 한 것과 비교할 필요가 있습니다. RegEx는이를 수행 할 수 없습니다. 알고리즘 및 기타 자세한 내용은
은 또한 당신에 대해 확인할 수있는 공통 번호 접두사의 목록을 제공합니다 this link를 참조하십시오.단골 표현
- 비자와 링크 Finding or Verifying Credit Card Numbers를 참조하십시오 :^4 [0-9] {12} (? : [0-9] {3})? $ 모든 비자 카드 번호가 시작 4. 새 카드는 16 자리 숫자입니다. 올드 카드는 13
- 마스터가 :^5 [1-5] [0-9] {14} 모든 마스터 카드 번호는 (55) 모든 51 내지 16 자리 숫자 숫자로 시작 $.
- 아메리칸 익스프레스 :^3 [47] [0-9] {13} $ 아메리칸 익스프레스 카드 번호는 34 또는 37로 시작하며 15 자리가 있습니다.
- 대래^3 (: 0 [0-5] | [68] [0-9]) [0-9] {11} $ 대래 카드 번호는 305 36 38 (300)을 통하여 시작한다. 모두 14 자리 숫자입니다. 다이너스 클럽 카드는 5로 시작하고 16 자리 숫자로되어 있습니다. Diners Club과 MasterCard의 조인트 벤처이며 MasterCard처럼 처리해야합니다. (? : 011 | 5 [0-9] {2}) :
- 발견^6 [0-9] 전체 16 자리 숫자 {12} $ 디스 커버 카드 번호가 6011 또는 65로 시작합니다.
- JCB (2131? : | 1800 | 35 \ D {3})^\ d를 2131 또는 1800으로 시작되는 {11} $ JCB 카드는 15 개 자리가 있습니다. 35로 시작하는 JCB 카드는 16 자리입니다.
안녕히 계십시오.
발견 카드가 새로운 범위를 추가했습니다. 발견 카드에 대한 정규식은 다음과 같습니다. ^ 6 (? : 0110 [0-9] | 011 [2-4] [0-9] | 01174 | 0117 [7-9 ] | 0118 [6-9] | 0119 [0-9] | 4 [4-9] [0-9] {3} | 5 [0-9] {4}) [0-9] {10} $ ' – realgt
중국 유니온 페이는 어떻습니까? –
더 이상 동의 할 수 없습니다. 지불 게이트웨이에는 시간이 필요합니다. 사용을 시도하기 전에 가능한 모든 것을해야 유효한지 확인해야합니다. – cletus
cletus : Luhn 시스템을 사용하여 간단한 확인을하고 분명히 필요한 모든 데이터가 전송되었는지 확인하십시오. –