텍스트 필드에 입력된 값은 숫자로 입력하거나 문자로 입력해도 string임

 

정규식 - regular expression

1. 이메일

let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

 

2. ID

let idRegEx = "[A-Za-z0-9]{5,13}"

 

3. 비밀번호

let pwRegEx = "[A-Za-z0-9!_@$%^&+=]{8,20}"

 

4. 닉네임

let nickRegEx = "[가-힣A-Za-z0-9]{2,7}"

 

 

 

 

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var EmailTextField: UITextField!
    @IBOutlet weak var PasswordTextField: UITextField!
    @IBOutlet weak var EmailError: UILabel!
    @IBOutlet weak var PasswordError: UILabel!
    
    var EmailErrorHeight: NSLayoutConstraint!
    var PasswordErrorHeight: NSLayoutConstraint!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 텍스트 필드의 값을 입력하거나 삭제할때 editingChanged로 받을수 있음
        EmailTextField.addTarget(self, action: #selector(TextFieldEdited), for: .editingChanged)
        PasswordTextField.addTarget(self, action: #selector(TextFieldEdited), for: .editingChanged)
        
        EmailErrorHeight = EmailError.heightAnchor.constraint(equalToConstant: 0)
        PasswordErrorHeight = PasswordError.heightAnchor.constraint(equalToConstant: 0)
    }
    
    @objc func TextFieldEdited(textField: UITextField) {
        
        if textField == EmailTextField {
            print("이메일 텍스트 필드 \(textField.text!)")
            
            if isValidEmail(Email: textField.text) == true {
                
                // .isActive = true 를 해야 활성화가 됨
                // email 값 형식에 맞으면 높이 값을 0으로 설정
                EmailErrorHeight.isActive = true
                
            } else {
                
                // 아니면 비활성화
                EmailErrorHeight.isActive = false
            }
            
        } else if textField == PasswordTextField {
            print("비밀번호 텍스트 필드 \(textField.text!)")
            
            if isValidPassword(pw: textField.text) == true {
                PasswordErrorHeight.isActive = true
                
            } else {
                PasswordErrorHeight.isActive = false
            }
        }
        
        UIView.animate(withDuration: 0.1) {
            self.view.layoutIfNeeded()
        }
        
    }
    
    // 정규식 - regular expression
    // 옵셔널 스트링으로 입력을 받아서 Bool 타입으로 리턴
    func isValidEmail(Email: String?) -> Bool {
            guard Email != nil else { return false }

            let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
            let pred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
            return pred.evaluate(with: Email)
        }

    func isValidPassword(pw: String?) -> Bool {
        
        // 입력한 비밀번호가 8자 이하면 false
        if let hasPassword = pw {
            if hasPassword.count < 8 {
                return false
            }
        }
        
        return true
    }
}

'Swift' 카테고리의 다른 글

버튼 관련 코드  (0) 2021.02.24
채팅 앱 구조의 이해와 테이블 뷰 활용  (0) 2021.02.18
팝업 레이아웃  (0) 2021.02.16
Switch  (0) 2021.02.16
커스텀 레이아웃을 스토리 보드와 연동  (0) 2021.02.15
Posted by khon98
,