LoginSignup
5
3

More than 3 years have passed since last update.

swiftでemailのバリデーションかけたけど、前後に日本語・スペースを許容してエラー文が表示されない

Last updated at Posted at 2019-05-16

メモメモ。

目標

emailにバリデーションをかけること。
日本語やスペースは許容しない。

なにごと

こういう書き方はたくさんみたけど

var isValidEmail: Bool {
    return (self =~ "[A-Z0-9a-z._+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}")
    }

前後に日本語なりスペースを入れた時にエラーがバリデーションをすり抜けた。
image.png

(エラー出ない。。)

バックエンドではちゃんとバリデーションかかるように実装済なのでサーバーエラーとして
返されちゃって気持ち悪い。

解決する

「前後に日本語なりスペース〜」を考慮した書き方にする。

    var isValidEmail: Bool {
        return (self =~ "^([A-Z0-9a-z._+-])+@([A-Za-z0-9.-])+\\.([A-Za-z]{2,})$")
    }

やったのは
・それぞれのパーツ[@と.の前後]を()で各要素を区分け
・始まり[ˆ]と終わり[$]を明記

image.png

(エラーでた😌)

全然見つからなかったのでメモメモ。
これだけなのにちょっと時間食われた。。

もっといい書き方あったらウェルカムです🍺

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3