Ich habe eine String-Erweiterung für die Validierung des Formulars in Swift 3 Sprache gemacht. Der Code ist unten:Verwendung von nicht aufgelösten Bezeichner bei Verwendung der Erweiterung in 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
}
}
Aber wenn ich versuche, diese Erweiterung Klasse in anderen View-Controller über den Code zu verwenden:
if isValidEmail("[email protected]"){
print("Validate EmailID")
}
else{
print("invalide EmailID")
}
denken ist, dass Sie Klasse func Methode wollen, rufen 'String.isValidEmail ("myString") ', oder besser noch Instanzen," myString ".isValidEmail()', aber in beiden Fällen möchten Sie vielleicht die Deklaration der Methoden überarbeiten. Wenn Sie "self" nicht in einer Instanzmethode oder einer seiner Eigenschaften verwenden, haben Sie möglicherweise etwas falsches (etwas vergessen, falsches Design usw.). – Larme
Sie müssen Ihre Erweiterung reparieren, weil Sie sie nicht benötigen um Parameter bei der Erweiterung Ihres Typs zu übergeben. –
überprüfen Sie diese http://stackoverflow.com/questions/31954416/regex-for-alphanumeric-without-special-characters-swift-ios/31954533#31954533 es könnte Ihnen helfen zu verstehen, –