Email & Phone Validation in Swift

后端 未结 21 1768
长发绾君心
长发绾君心 2020-12-07 12:02

i am using the following code for phone number validation. But i am getting the following error. I cant able to proceed further. Help us to take it forward.

         


        
相关标签:
21条回答
  • 2020-12-07 13:02

    Swift 3.0 to 5.0 Updated Solution:

    //MARK:- Validation Extension -

    extension String {
    
        //To check text field or String is blank or not
        var isBlank: Bool {
            get {
                let trimmed = trimmingCharacters(in: CharacterSet.whitespaces)
                return trimmed.isEmpty
            }
        }
    
        //Validate Email
    
        var isEmail: Bool {
            do {
                let regex = try NSRegularExpression(pattern: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}", options: .caseInsensitive)
                return regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) != nil
            } catch {
                return false
            }
        }
    
        var isAlphanumeric: Bool {
            return !isEmpty && range(of: "[^a-zA-Z0-9]", options: .regularExpression) == nil
        }
    
        //validate Password
        var isValidPassword: Bool {
            do {
                let regex = try NSRegularExpression(pattern: "^[a-zA-Z_0-9\\-_,;.:#+*?=!§$%&/()@]+$", options: .caseInsensitive)
                if(regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count)) != nil){
    
                    if(self.characters.count>=6 && self.count<=20){
                        return true
                    }else{
                        return false
                    }
                }else{
                    return false
                }
            } catch {
                return false
            }
        }
    }
    

    use of Email Validation:

    if(txtEmail.isEmail){
    }
    

    Swift 2.0 Solution

    Paste these line anywhere in code.(or in your Constant file)

    extension String {
    
        //To check text field or String is blank or not
        var isBlank: Bool {
            get {
                let trimmed = stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
                return trimmed.isEmpty
            }
        }
    
        //Validate Email
        var isEmail: Bool {
            do {
                let regex = try NSRegularExpression(pattern: "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}", options: .CaseInsensitive)
                return regex.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) != nil
            } catch {
                return false
            }
        }
    
        //validate PhoneNumber
        var isPhoneNumber: Bool {
    
            let charcter  = NSCharacterSet(charactersInString: "+0123456789").invertedSet
            var filtered:NSString!
            let inputString:NSArray = self.componentsSeparatedByCharactersInSet(charcter)
            filtered = inputString.componentsJoinedByString("")
            return  self == filtered
    
        }
    }
    
    0 讨论(0)
  • 2020-12-07 13:02

    "validate Email"-Solution for Swift 4: Create this class:

    import Foundation
    
    public class EmailAddressValidator {
        public init() {
        }
    
        public func validateEmailAddress(_ email: String) -> Bool {
            let emailTest = NSPredicate(format: "SELF MATCHES %@", String.emailValidationRegEx)
    
            return emailTest.evaluate(with: email)
        }
    }
    
    private extension String {
        static let emailValidationRegEx = "(?:[\\p{L}0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[\\p{L}0-9!#$%\\&'*+/=?\\^_`{|}" +
            "~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\" +
            "x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[\\p{L}0-9](?:[a-" +
            "z0-9-]*[\\p{L}0-9])?\\.)+[\\p{L}0-9](?:[\\p{L}0-9-]*[\\p{L}0-9])?|\\[(?:(?:25[0-5" +
            "]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-" +
            "9][0-9]?|[\\p{L}0-9-]*[\\p{L}0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21" +
        "-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"
    }
    

    and use it like this:

    let validator = EmailAddressValidator()
    let isValid = validator.validateEmailAddress("testmail@testmail.com")
    
    0 讨论(0)
  • 2020-12-07 13:03

    Swift 4+

    You can use simplified regex "^[6-9]\\d{9}$"

    ^     #Match the beginning of the string
    [6-9] #Match a 6, 7, 8 or 9
    \\d   #Match a digit (0-9 and anything else that is a "digit" in the regex engine)
    {9}   #Repeat the previous "\d" 9 times (9 digits)
    $     #Match the end of the string
    

    From Reference

    Indian 10 Digit Mobile validation(can start with 6,7,8,9) -

    extension String {
        var isValidContact: Bool {
            let phoneNumberRegex = "^[6-9]\\d{9}$"
            let phoneTest = NSPredicate(format: "SELF MATCHES %@", phoneNumberRegex)
            let isValidPhone = phoneTest.evaluate(with: self)
            return isValidPhone
        }
    } 
    

    Usage:-

    print("9292929292".isValidContact)//true
    print("5454545454".isValidContact)//false
    

    For email validation you can check this

    0 讨论(0)
提交回复
热议问题