[PHP]「キリ番」を判定する

Pocket

「キリ番」と聞くとずいぶん懐かしい響きですが、要するに切りの良い数字のことです。
定義は色々あるのですが、概ね「10000」などの桁が上がった時か、「777」などの同じ数字の連続、「12345」などの連番がキリ番とみなされることが多いようです。

<?php
for($i=0;$i<=3000;$i++){
  //ゼロの連続
  $flag = false;
  if(preg_match("/^[1-9]0+$/", $i)){
    $flag = true;
  }
  
  //ゾロ目
  if(preg_match("/^([1-9])\\1{2,}$/", $i)){
    $flag = true;
  }
  
  //連番
  if( $i >= 100 && (string)$i === substr("123456789", 0, strlen($i))){
    $flag = true;
  }
  if($flag) echo $i . "<br>\n";
}

大体正規表現を使えば取得できます。連番も正規表現で取れなくはないのですが、直接比較したほうが直感的なのでこのようにしました。
12を連番とみなすにはやや無理があったので3桁以上あることを条件にしてあります。
同じ理由でゾロ目も3桁以上を条件にしてありますが、「11」や「22」も許可するなら少し数字を書き換えます。

/^([1-9])\\1{1,}$/

Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です