[JavaScript] 数値がゾロ目か判定する

  • このエントリーをはてなブックマークに追加
  • LINEで送る

小ネタです。

指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。

結論から言うと以下の通り。

/**
 * ゾロ目判定
 *
 * @param {number} num
 * @returns {boolean}
 */
function isZorome(num){
  return String(num).match(/^([0-9])\1+$/) !== null
}

正規表現の\1はキャプチャグループと呼ばれ、直前のグループがマッチした場合にそれを参照することができます。+は直前のパターンを1個以上繰り返すことを意味するため、/^([0-9])\1+$/とすることで最初の数値が最初から最後まで連続していることを示すことができます。

実際に実行すると以下のような結果になります。

console.log( isZorome(12345) )    // false
console.log( isZorome(11111) )    // true
console.log( isZorome("12345") )  // false
console.log( isZorome("11111") )  // true
console.log( isZorome("abcde") )  // false
console.log( isZorome("aaaaa") )  // false

例えば数値のみのパスワード(暗証番号)として入力された数値がゾロ目だったら警告を出すといった用途に使えるかもしれませんね。

正規表現を使わないパターン

split()で1桁ずつの数字にばらした配列に変換し、everyでチェックします。

function isZorome(value){
  const num = String(value).split('')

  return(
    (! isNaN(num[0])) && (num.every(v => v === num[0]))
  )
}

お好みの方法でどうぞ。

コメント

コメント欄は休止中です。お問い合わせはこちらからどうぞ。ご質問はTwitterにリプを投げてください。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -