fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

【Ruby】文字列において、同一文字が連続しているかどうかを判定する

やりたいこと

文字列において、同一文字が連続しているかを判定する
例えば、 '123abbbc' は 'b' が3文字連続していることを判定したい

利用場面

パスワードのvalid判定などにおいて、「同一文字が連続していないこと」をチェックしたい場合など

やり方

正規表現の後方参照を使い、ある文字をキャプチャし、その直後で同一文字が存在するかを確認

後方参照って何?という場合は下記
初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」 - Qiita

具体例

# 3文字以上連続した文字列が存在する場合、Invalidとして弾く
password = '123abbbc' 
if password =~ /(\w)\1{2,}/ 
  puts 'Invalid password'
end