Я использую проверки электронной почты в моем проекте, какой метод, как показано нижеEmail Validation не так, как на Regex
//MARK: isValidEmailID
func isValidEmail(testStr:String) -> Bool {
print("validate emilId: \(testStr)")
let emailRegEx = "^(?:(?:(?:(?:)*(?:(?:(?:\\t|)*\\r\\n)?(?:\\t|)+))+(?:)*)|(?:)+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?:)*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?:)*)|(?:)+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?:)*[!-Z^-~])*(?:)*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?:)*(?:(?:(?:\\t|)*\\r\\n)?(?:\\t|)+))+(?:)*)|(?:)+)?$"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluateWithObject(testStr)
return result
}
ИЛИ
func isValidEmailID(email: String) -> Bool {
let regExPattern: String = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let emailValidator: NSPredicate = NSPredicate(format: "SELF MATCHES %@", regExPattern)
let isValid: Bool = emailValidator.evaluateWithObject(email)
return isValid
}
это как Regex прекрасно работает, когда я вхожу «modijecky @ gmail.com "или любой другой неправильный ввод, но он не будет работать, когда я войду в" [email protected] ".
Итак, я узнал, что «имя @ .com.com» является допустимым адресом электронной почты, и есть больше поддоменов, подобных этому. Поэтому теперь я хочу, чтобы пользователь не вводил поддомены. Существует ли какой-либо REGEX, который проверяет адрес электронной почты только в одном домене, например «[email protected]», а не в нескольких доменах или поддоменах.
Я также пытаюсь использовать Regex из Google и внедрять его в проект, но такая же проблема возникает.
Пожалуйста, помогите мне с этим.
Спасибо
Почему 'modijecky @ gmail.com.com' считается ошибочным? 'com.com' является допустимым доменом, а также' gmail.com.com'. См. Https://en.wikipedia.org/wiki/Email_address#Examples – Toto
Единственный безопасный способ проверки электронной почты - отправить электронное письмо и дождаться возврата. – Toto
Пожалуйста, уточните мой обновленный ответ –