Rubyを勉強する一環で、入力したメールアドレスをリンクに変えるコードを書いてみました。
目次
サンプルコード
Ruby
def replace_email_with_links(input_string)
# メールアドレスの正規表現
email_regex = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b/i
# 入力文字列内のメールアドレスをリンクに変換
result = input_string.gsub(email_regex) do |email|
"<a href='mailto:#{email}'>#{email}</a>"
end
result
end
# テスト
input_string = "Hello, my email address is example@example.com. Please feel free to contact me."
puts replace_email_with_links(input_string)
正規表現で入力されたメールアドレスを抜き出す
以下のコードによって正規表現で入力をふるいにかけられます。
Ruby
# メールアドレスの正規表現
email_regex = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/i
-
補足
- \b:単語の境界を表す
- [A-Za-z0-9._%+-]+:英数字、ドット、アンダースコア、パーセント、プラス、ハイフンの1文字以上の繰り返しを意味する
- \.:メールアドレスのドメイン名とトップレベルドメインを区切るドットを意味する。なお、\は.をエスケープさせる文字として使用されている。.は、正規表現では任意の1文字にマッチする特殊なメタ文字であるが、.としてエスケープすることで、.をリテラル文字として扱うことができる。
- /i:正規表現のフラグで、大文字小文字を無視することを示す。
email_regexで抜き出したメールアドレスをリンクに変換する
以下のコードでは、input_stringから、email_regexの条件に合う部分を抜き出し、その変数名をemailと置いている。その後、emailをリンク化している
Ruby
# 入力文字列内のメールアドレスをリンクに変換
result = input_string.gsub(email_regex) do |email|
"<a href='mailto:#{email}'>#{email}</a>"
end
最後に
今回は自らの勉強用に記述したコードを解説しました。Railsでなんとなく記載していることでしたが、細かく分解して読解しようとすると慣れるまでは少し厄介だと思うので、備忘録として記事にしました。