2017-11-06 2 views
1

私は電子メールアドワーズを入力しているメールテキストフィールドを持っています。今私は電子メールアドレスの最後にスペースを入力すると、それでも無効なemail.Butと見なされるので、ユーザーが間違って入力することはできません。電子メール文字列の空白をすばやく許可する方法は?

私は以下のコードを検証のために使用しています。このための最良の解決策を教えてください。

var isValidEmail: Bool { 
    let emailRegEx = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" //"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" 
    let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegEx) 
    return emailTest.evaluate(with: self) 
} 
+0

ちょうど(中:.whitespaces) 'trimmingCharactersを使用する代わりに'自己の –

+0

は@rmaddyなぜあなたはスウィフトタグを削除しましたか? –

+0

@Leo質問はスイフトについてではないので。それは正規表現に関するものです。 – rmaddy

答えて

1

あなたは空白文字を末尾許可するパターンを使用することがあります。

let emailRegEx = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,64}\\s*" 
                    ^^^ 

\s*パターンは0以上の空白文字にマッチします。

regex demoを参照してください。

あなたのパターンが一致します。文字列の

  • スタート(それはMATCHESで使用したパターンに内在する)
  • [A-Z0-9a-z._%+-]+から1文字以上の文字、数字、文字クラスにsepcifiedシンボルを
  • @から@チャー
  • [A-Za-z0-9.-]+ - 1+ ASCIIの英数字文字、.又は/及び-文字
  • \\. - ドット
  • [A-Za-z]{2,64}から2〜64のASCII文字
  • \\s* - 0+空白。
0

私はこのfuncを使用します。

func validateEmail(candidate: String) -> Bool { 
    let emailRegex = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}" 
    return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate.trimmingCharacters(in: .whitespaces)) 
} 
関連する問題