スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【正規表現】Rubyで、文字列がURLかどうかをチェックする

こんにちは、mahです。

このブログでは、自分がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。

今回は、Rubyで正規表現を使って、文字列がURLかどうかをチェックする方法 をまとめました。

結論

URI.regexp.match(検証したい文字列).nil?

で出来ます。

本記事で使うメソッドのリファレンス

module URI (Ruby 2.7.0 リファレンスマニュアル)

URI.regexp (Ruby 2.7.0 リファレンスマニュアル)

Regexp#match (Ruby 2.7.0 リファレンスマニュアル)

Object#nil? (Ruby 2.7.0 リファレンスマニュアル)

解説

URI.regexp.match(検証したい文字列) を使います。

対象の文字列がURLの場合

=> MatchDataオブジェクトが返ります。

URI.regexp.match('https://www.malanka.tech')
=> #<MatchData
 "https://www.malanka.tech"
 1:"https"
 2:nil
 3:nil
 4:"www.malanka.tech"
 5:nil
 6:nil
 7:nil
 8:nil
 9:nil>
対象の文字列がURLでない場合

=> nilが返ります。

URI.regexp.match('URLではありません')
=> nil

この性質を利用して、冒頭の、

URI.regexp.match(検証したい文字列).nil?

で論理値を返すことで、対象の文字列がURLかどうかをチェックすることが出来ます。

# URLなのでMatchDataオブジェクトを返す。よって .nil? はfalseを返す
> URI.regexp.match('https://www.malanka.tech').nil?
=> false

# URLではないのでマッチせずにnilを返す。よって .nil? はtrueを返す
> URI.regexp.match('URLではありません').nil?
=> true

以上、Rubyで正規表現を使って、文字列がURLかどうかをチェックする方法 でした。

正規表現って聞くと難しそうで「うっ...」っとなりますよね笑

でも、Rubyには便利なメソッドが沢山用意されているので、簡単に実現出来たりします。

たまーにリファレンスを色々ググってみると、

  • こんな簡単に出来たのか!

という発見がありますよ。

もし、まだRubyを使いはじめて日が浅い人は、一度技術書で体型的に学ぶのをオススメします。

自分も本は苦手ですが、

  • ググってるだけだと、どうしても知識が断片的になる

  • 基本を知らないまま進んでいる

ということに気付き、技術書を手にとって学んでみました。

その時に読んでいたのが、下記の本。

この本の作者の伊藤さんは、Qiitaで沢山の良質記事を量産している方です。

jnchito - Qiita

この本についても初心者から熟練者まで、丁寧でわかりやすい文章、確かなコードでとても読みやすく書かれています。

自分も大変お世話になっています笑

まだまだこれからも勉強しなきゃ...


最後に、下記の記事で、

  • 実務未経験から1年でフリーランスエンジニアになった話

  • 【完璧!】フリーエンジニアの案件面談対策 〜全20問〜

を紹介しています。

  • フリーエンジニアになりたい!

  • 面談はどんなことを聞かれるのか知りたい!

という方は、よかったら参考にしてみてください。

www.malanka.tech

www.malanka.tech

最後までお読み頂きありがとうございました★