준코딩

(ios/Swift) 비밀번호, 이메일, 전화번호 유효성 검사 본문

프로그래밍/IOS (Swift)

(ios/Swift) 비밀번호, 이메일, 전화번호 유효성 검사

Ljunhyeob - App Dev 2022. 12. 29. 20:08

Xcode : 14.2v

사용언어: Swift , StoryBoard

깃허브주소: https://github.com/Ljunhyeob/NSPredicate

 

1.  비밀번호, 이메일, 전화번호 유효성 검사를 진행 하기 위해서 

각각의 label, textField , button 을 추가해서 연결해줍니다.

 

 

2.그리고 각각의 유효성 검사를 진행해주는 함수를 생성합니다 (코드는 맨아래에 있습니다.)

isValidEmail ->이메일 유효성 검사

isValidPwd -> 비밀번호 유효성 검사

isValidPhoneNume -> 휴대폰 유효성검사

 

3. 그리고 각각의 버튼에 

입력을 했는지 if문으로 확인 한 이후에

2번에서 생성한 함수에 textField 값을 넣어서 if문으로 확인 한 후

true / false 값에 따라서 원하는 코드를 입력해 주시면 됩니다.

저는 label 을 변경해주었습니다.

 

 

 

 

 

 

4. 그럼 이렇게 끝입니다.

 

 

 

 

전체 코드

//
//  ViewController.swift
//  ValidationTest
//
//  Created by 이준협 on 2022/12/29.
//

import UIKit

class ViewController: UIViewController {
    
    
    @IBOutlet weak var pwdLabel: UILabel!
    @IBOutlet weak var pwdTextField: UITextField!
    
    @IBOutlet weak var phoneNumLabel: UILabel!
    @IBOutlet weak var phoneNumTextfield: UITextField!
    
    @IBOutlet weak var emailLabel: UILabel!
    @IBOutlet weak var emailTextfield: UITextField!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func pwdBtn(_ sender: Any) {
        if pwdLabel.text != nil {
            if isValidPwd(testStr: pwdTextField.text!){
                pwdLabel.text = "비밀번호 형식 맞음"
            }else {
                pwdLabel.text = "비밀번호 형식 틀림"
            }
        }else {
            print("핸드폰번호를 입력하세요.")
        }
    }
    
    @IBAction func phoneNumBtn(_ sender: Any) {
        if phoneNumLabel.text != nil {
            if isValidPhoneNum(testStr: phoneNumTextfield.text!) {
                phoneNumLabel.text = "핸드폰 형식 맞음"
            }else {
                phoneNumLabel.text = "핸드폰 형식 틀림"
            }
        }else {
            print("핸드폰번호를 입력하세요.")
        }
    }
    
    @IBAction func emailBtn(_ sender: Any) {
        if phoneNumLabel.text != nil {
            if isValidEmail(testStr: emailTextfield.text!) {
                emailLabel.text = "이메일 형식 맞음"
            }else {
                emailLabel.text = "이메일 형식 틀림"
            }
        }else {
            print("핸드폰번호를 입력하세요.")
        }
       
    }
    
    
    func isValidEmail(testStr:String) -> Bool {
           let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
        // 영문숫자 + 골뱅이 + 영문숫자 + . + 영문숫자
           let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
           let isValid = emailTest.evaluate(with: testStr)
            return isValid
        }
    
    
    
    func isValidPwd(testStr:String) -> Bool {
        let regex = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+=-]).{8,50}" // 8자리 ~ 50자리 영어+숫자+특수문자

           let predicate = NSPredicate(format: "SELF MATCHES %@", regex)
           let isValid = predicate.evaluate(with: testStr)
            return isValid
        }
    
    
    
    func isValidPhoneNum(testStr:String) -> Bool {
        //01 로 시작해서 0~9 사이의 숫자가 7~8자리
        let regex = "^01[0-1, 7][0-9]{7,8}$"
           let phonePredicate = NSPredicate(format: "SELF MATCHES %@", regex)
           let isValid = phonePredicate.evaluate(with: testStr)
            return isValid
        }
    
    
    
    
    
}
Comments