我已經制作了一個字符串擴展來驗證Swift 3語言中的表單。 的代碼如下:在swift中使用擴展名時使用未解析的標識符3
import UIKit
extension String {
// Validating Email ID
func isValidEmail(testStr:String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailTest.evaluate(with: testStr)
}
// Validating the User name
func isValidUserName(testStr:String) -> Bool {
let RegEx = "\\A\\w{7,18}\\z"
let Test = NSPredicate(format:"SELF MATCHES %@", RegEx)
return Test.evaluate(with: testStr)
}
// Validating the phone number
var isPhoneNumber: Bool {
do {
let detector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.phoneNumber.rawValue)
let matches = detector.matches(in: self, options: [], range: NSMakeRange(0, self.characters.count))
if let res = matches.first {
return res.resultType == .phoneNumber && res.range.location == 0 && res.range.length == self.characters.count
} else {
return false
}
} catch {
return false
}
}
// validating the password
/*
Use the function of Swift 3.0.
1. 8 characters length
2. alphabet
3. special character
regex Syntax Explanation :
(?=.[a-z]) for Character.
(?=.[[email protected]$#!%?&]) for special character.
{8,} for length which you want to prefer.
*/
func isPasswordValid(_ password : String) -> Bool{
let passwordTest = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[a-z])(?=.*[[email protected]$#!%*?&])[A-Za-z\\[email protected]$#!%*?&]{8,}")
return passwordTest.evaluate(with: password)
}
// validating the password and confirm password are same........................
func isPasswordSame(password: String , confirmPassword : String) -> Bool {
if password == confirmPassword{
return true
} else {
return false
}
}
// validating Blank Text........................
var isBlank:Bool {
return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).isEmpty
}
}
但是,當我試圖通過代碼使用在其他視圖控制器此擴展類:
if isValidEmail("[email protected]"){
print("Validate EmailID")
}
else{
print("invalide EmailID")
}
是想你想通過這門課FUNC方法,調用'String.isValidEmail(和「myString」 )',或者仍然是實例''myString「.isValidEmail()',但是在這兩種情況下,您都可能想要修改方法的聲明。通常情況下,如果您不在實例方法或其某個屬性中使用'self',則可能有錯誤(忘記了某些內容,設計錯誤等) – Larme
您需要修復擴展因爲您不需要在擴展類型時傳遞任何參數。 –
檢查此問題http://stackoverflow.com/questions/31954416/regex-for-alphanumeric-without-special-characters-swift-ios/31954533#31954533它可能會幫助您瞭解 –