PHPサンプル
UPDATE:2017年04月01日
クレジットカード番号を判別したい
正規表現 クレジットカード番号 の判別 「preg_match()」
数値や論理値 = preg_match (パターン文字列, 入力文字列)
パターン文字列は、検索するパターンを表現する文字列です。入力文字列は検索する対象の文字列です。検索に一致すると数値の 1 を返し、一致しなかった場合 0 を返し、エラーが発生した場合は、 論理値 FALSE を返します。
クレジットカード番号の書式が正しいかどうか判別する正規表現
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <!-- サンプルコード --> //VISA //4で始まる13桁か16桁の数値 '/^4[0-9]{12}(?:[0-9]{3})?$/' //MasterCard //51~55で始まる16桁の数値 '/^5[1-5][0-9]{14}$/' //Discover Card //6011から始まる16桁の数値 '/^6011[0-9]{12}$/' //Diners Club //300-305、360-369、380-389で始まる14桁の数値 '/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/' //American Express //34か37で始まる15桁の数値 '/^3[47][0-9]{13}$/' //JCB Card //2131か1800で始まる15桁の数値 或いは 35で始まる16桁の数値 '/^(?:2131|1800|35[0-9]{3})[0-9]{11}$/' //上記全部 '/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13}|(?:2131|1800|35[0-9]{3})[0-9]{11})$/' |
1 2 3 4 5 6 7 | <!-- サンプルコード --> <?php //チェック $cardNo = '4980016629760524'; if(preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13}|(?:2131|1800|35[0-9]{3})[0-9]{11})$/', $cardNo)) echo '正しいカード番号'; else echo '不正なカード番号'; ?> |
結果は
正しいカード番号
となります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <!-- サンプルコード --> <h3>正規表現 クレジットカード番号 の判別</h3> <?php //通常版 $sCardNo = '378282246310005'; if(preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13}|(?:2131|1800|35[0-9]{3})[0-9]{11})$/', $sCardNo)){ echo $sCardNo.'は正しいカード番号です。'; }else{ echo $sCardNo.'は不正なカード番号です。'; } ?> <h3>正規表現 クレジットカード番号 の判別 関数版</h3> <?php //関数版 function CheckCardNo($cn){ if(preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13}|(?:2131|1800|35[0-9]{3})[0-9]{11})$/', $cn)){ return true; } return false; } $sCardNo = '378282246310005'; if(CheckCardNo($sCardNo)) echo $sCardNo.'は正しいカード番号です。'; else echo $sCardNo.'は不正なカード番号です。'; ?> |
実行結果
正規表現 クレジットカード番号 の判別
378282246310005は正しいカード番号です。
378282246310005は正しいカード番号です。
正規表現 クレジットカード番号 の判別 関数版
378282246310005は正しいカード番号です。
タグ(=記事関連ワード)
日付
投稿日:2012年3月3日
最終更新日:2017年04月01日
最終更新日:2017年04月01日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-preg-card/trackback/