正規表現でクレジットカードを確認する正しい方法は何ですか? どちらを使用するかは、オンラインでたくさんあります。そうでない場合、確認する方法は?
5 に答える
このリンクを参照してください正規表現を使用したクレジット カード番号の検索または確認
- Visa: ^4[0-9]{12}(?:[0-9]{3})?$ すべての Visa カード番号は 4 で始まります。新しいカードは 16 桁です。古いカードは 13 です。
- MasterCard: ^5[1-5][0-9]{14}$ すべての MasterCard 番号は 51 ~ 55 の数字で始まります。すべて 16 桁です。
- American Express: ^3[47][0-9]{13}$ American Express カード番号は 34 または 37 で始まり、15 桁です。
- ダイナース クラブ: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$ ダイナース クラブのカード番号は 300 ~ 305、36、または 38 で始まります。すべて 14 です。数字。5から始まる16桁のダイナースクラブカードがあります。これらは Diners Club と MasterCard の共同事業であり、MasterCard のように処理する必要があります。
- Discover: ^6(?:011|5[0-9]{2})[0-9]{12}$ Discover カード番号は 6011 または 65 で始まります。すべて 16 桁です。
- JCB: ^(?:2131|1800|35\d{3})\d{11}$ 2131または1800で始まるJCBカードは15桁です。35で始まるJCBカードは16桁です。
さよなら。
スペースを含むクレジット カード番号を使用するにはどうすればよいですか? 必要なすべてをカバーします。
Luhn Algorithmを探していると思います。これは、さまざまな識別番号を検証するために使用される単純なチェックサム式です。
- 編集:
実際、私は自分自身に少し同意せず、cletus に同意します。送信する前に、(特定の種類のクレジット カード [IMHO] の詳細には触れずに) できる限り検証してください。言うまでもなく (願わくば)、この検証は JavaScript で行い、高速化してから、サーバー上で (そして JavaScript が無効な人のために) 再確認する必要があります。
-- 以前の回答:
気にしないでください。実際に支払いを試みるときにプロバイダーに確認させてください。自分で確認しようとする正当な理由はありません。ただし、本当に使いたい場合は、これを使用できます。
それは、事前検証をどの程度正確にしたいかによって異なります。できることをすべて検証するには、カードの最後の桁がどうあるべきかを計算し、入力されたものと比較する必要がありますが、これは RegEx では実行できません。
アルゴリズムとその他の詳細については、このリンクを参照してください。これには、検証できる一般的な番号プレフィックスのリストも含まれています。