##はじめに
初投稿です。Android開発学習中の大学生です。学んだことをまとめて頭の中を整理するために書きます。なので僕と同じ初心者向けの内容です。
##背景
Android開発で会員登録の機能を作っているときに、入力された文字列がメールアドレスかどうかの判定方法がわからず困りました。いろいろ調べたり知人のエンジニアの方に教わったことをまとめます。
##解決方法
大きく分けて二つの方法があります。
1.正規表現でメールアドレスのパターンを作って、それと入力された文字列が合致するか調べる方法。
2.Androidにデフォルトで存在するPatternsクラスのメソッドを用いて調べる方法。
あくまで僕の解釈ですが、1の方が本質的なやり方で2は飛び道具みたいな感じかなと思いました。ただ1の方が正規表現のことを理解していないとできないのでめんどくさめ。あと抜け漏れが発生しやすいかも。まあでも2のやり方も大元では1と同じことやってそう。
##1の方法について
まず、正規表現の概念と定型パターンは
概念 : https://userweb.mnet.ne.jp/nakama/
定型パターン : https://qiita.com/grrrr/items/0b35b5c1c98eebfa5128
がわかりやすかったです。
入力された文字列がメールアドレスならばtrueそれ以外はfalseを返すサンプルメソッド。
fun isEmailAddress(): Boolean {
val mail = editText.text.toString()
return mail.matches(Regex("[a-zA-Z0-9._-]+@[a-z]{2,}+\\.+[a-z]{2,}"))
}
※正規表現の部分は抜け漏れがあるかもしれないので参考程度に思っといてください。
純粋に入力された文字列が正規表現で設定した型とあってるかを見る方法です。
##2の方法について
なんも考えず使える、ただただ便利な方法です。抜け漏れも起こりにくいと思います。起きたらAndroidのせいです。
公式のドキュメント : https://developer.android.com/reference/android/util/Patterns
fun isEmailAddress(): Boolean {
val mail = editText.text.toString()
return Patterns.EMAIL_ADDRESS.matcher(mail).matches()
}
脳死で使いましょう。
##結論
多分1の方法を理解したうえで、2の方法を使うっていうのがベストです。
##追記
意外と記事書くのが楽しかった。あと内容が間違っている可能性があるので気を付けてください。あとこれはメールアドレスだけでなく、電話番号とかほかにも応用できます。
4:00に深夜テンションで書いたのでもう寝ます。
※コメントで、誤解を招く表記をご指摘頂いたので更新しました。コメント頂いた@sdkeiさんありがとうございます。
2/21 22:00に更新