« Class::DBI::Replication | メイン | システム監視のツール »

チェックデジットが正しいかを調べる正規表現

チェックデジットが正しいかを調べる正規表現

JANコードには13桁のコードと短縮の8桁コードが存在するが、いずれもバーコードの読み込みエラーを防ぐためにチェックデジットが存在する。正しいJANコードかどうかを判定する正規表現をPHPで実装してみたのが次のコード。

function verifyCheckDigit($jan_code){
 return (preg_match('/^(?:(\d)(\d)(\d)(\d)(\d))?(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/', $jan_code, $arr_arg) && (
  (10 -
  (($arr_arg[2] + $arr_arg[4] + $arr_arg[6] + $arr_arg[8] + $arr_arg[10] + $arr_arg[12]) * 3 +
  $arr_arg[1] + $arr_arg[3] + $arr_arg[5] + $arr_arg[7] + $arr_arg[9] + $arr_arg[11]) % 10) % 10 == $arr_arg[13]
 ));
}

一応正規表現をベースにして処理が高速化できるよう最適化してあります。



トラックバック

トラックバックは本サイトの紹介(リンクがあれば可)があるものに限り受付いたします。このエントリーのトラックバックURLは以下のとおりです。

http://blog.development-network.net/mt/mt-tb.cgi/179

コメントを投稿