PHPでウェブの世界と繋がろう!
menu
ホーム > PHPサンプル > 正規表現系 > クレジットカード番号を判別したい

クレジットカード番号を判別したい

Pocket

サンプルコード sample code
正規表現 クレジットカード番号 の判別 「preg_match()」
数値や論理値 = preg_match (パターン文字列, 入力文字列)

パターン文字列は、検索するパターンを表現する文字列です。入力文字列は検索する対象の文字列です。検索に一致すると数値の 1 を返し、一致しなかった場合 0 を返し、エラーが発生した場合は、 論理値 FALSE を返します。

クレジットカード番号の書式が正しいかどうか判別する正規表現
//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})$/'
//チェック
$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 '不正なカード番号';

結果は

正しいカード番号

となります。

サンプルコード

– サンプル Click Here ! –

<h3>正規表現 クレジットカード番号 の判別</h3>
<?php
//通常版
$sCardNo = '378282246310005';
if(preg_match('/^(?:4&#91;0-9&#93;{12}(?:&#91;0-9&#93;{3})?|5&#91;1-5&#93;&#91;0-9&#93;{14}|6011&#91;0-9&#93;{12}|3(?:0&#91;0-5&#93;|&#91;68&#93;&#91;0-9&#93;)&#91;0-9&#93;{11}|3&#91;47&#93;&#91;0-9&#93;{13}|(?:2131|1800|35&#91;0-9&#93;{3})&#91;0-9&#93;{11})$/', $sCardNo)){
    echo $sCardNo.'は正しいカード番号です。';
}else{
    echo $sCardNo.'は不正なカード番号です。';
}
?>

<h3>正規表現 クレジットカード番号 の判別 関数版</h3>
<?php
//関数版
function CheckCardNo($cn){
    if(preg_match('/^(?:4&#91;0-9&#93;{12}(?:&#91;0-9&#93;{3})?|5&#91;1-5&#93;&#91;0-9&#93;{14}|6011&#91;0-9&#93;{12}|3(?:0&#91;0-5&#93;|&#91;68&#93;&#91;0-9&#93;)&#91;0-9&#93;{11}|3&#91;47&#93;&#91;0-9&#93;{13}|(?:2131|1800|35&#91;0-9&#93;{3})&#91;0-9&#93;{11})$/', $cn)){
        return true;
    }
    return false;
}

$sCardNo = '378282246310005';
if(CheckCardNo($sCardNo))
echo $sCardNo.'は正しいカード番号です。';
else
echo $sCardNo.'は不正なカード番号です。';
?>
実行結果
正規表現 クレジットカード番号 の判別
378282246310005は正しいカード番号です。

正規表現 クレジットカード番号 の判別 関数版
378282246310005は正しいカード番号です。

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2012年3月3日
最終更新日:2014年02月20日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsample-preg-card/trackback/