這個問題在這里已經有了答案: 如何快速驗證電子郵件地址? (37 個回答) 7 小時前關閉。
\b[A-Z0-9._% -] @[A-Z0-9.-] \.[A-Z]{2,}\b
https://www.regular-expressions.info/email.html
如何將上面的正則運算式應用到NSRegularExpressionSwift 中?運行此代碼時出現 SIGABRT 錯誤。
func validEmail(from input: String) -> String? {
do {
let regex = try NSRegularExpression(pattern: #"\b[A-Z0-9._% -] @[A-Z0-9.-] \.[A-Z]{2,}\b"#,
options: .caseInsensitive)
let range = NSRange(location: 0, length: input.utf16.count)
let matches = regex.matches(in: input, options: [], range: range)
if let match = matches.first {
let matchedRange = match.range(at: 1)
if let swiftRange = Range(matchedRange, in: input) {
return String(input[swiftRange])
}
}
} catch {
print(error)
}
return nil
}
let email = "[email protected]"
print(validEmail(from: email) ?? "invalid email")
uj5u.com熱心網友回復:
您可以簡單地使用字串range(of:)并傳遞.regularExpression給選項。要匹配小寫字母,您只需添加a-z到您的正則運算式:
func validEmail(from input: String) -> String? {
guard let range = input.range(of: #"\b[A-Za-z0-9._% -] @[A-Za-z0-9.-] \.[A-Za-z]{2,}\b"#, options: .regularExpression) else { return nil }
return String(input[range])
}
let email = "[email protected]"
print(validEmail(from: email) ?? "invalid email") // [email protected]
要從字面上修復錯誤,您需要將零傳遞給范圍:
match.range(at: 0)
uj5u.com熱心網友回復:
在我看來,為了更簡單,我更喜歡使用擴展
extension String {
func isValidEmail() -> Bool {
let emailRegEx = #"\b[A-Za-z0-9._% -] @[A-Za-z0-9.-] \.[A-Za-z]{2,}\b"#
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailTest.evaluate(with: self)
}
}
如何使用
let email = "[email protected]"
print(email.isValidEmail() ? email : "invalid email")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/440613.html
下一篇:將新元素附加到陣列Swift
