Rubyで正規表現にマッチするか比較して結果を取得しよう!

Rubyで正規表現にマッチするか比較して結果を取得してみましょう。

ポイントは以下の通りです。

  • =~ で比較する場合、マッチした場合は0以上、マッチしない場合はnilが返ってくる
  • !~ で比較する場合、マッチした場合はfalse、マッチしない場合はtrueが返ってくる

使用例は以下の通り。

num = /\d{3}-\d{4}/
p num.class # => Regexp

p '123-1234' =~ num
# => 0
p 'good for you' =~ num
# => nil

p '123-1234' !~ num
# => false
p 'good for you' !~ num
# => true

 

これを活用してメソッドを作ってutility などのAPIとして使い回すと便利そうですね(*^^*)

例は以下の通りです。

def test(param, regexp)
  if param =~ regexp
    p '正規表現OK'
  else
    p '正規表現NG'
  end
end

test('123-1234', /\d{3}-\d{4}/)
# => 正規表現OK
test('hello', /\d{3}-\d{4}/)
# => 正規表現NG

 

何か参考になると幸いです(*^^*)