[iOS] 정규표현식

김범수·2022년 6월 2일
0

iOS

목록 보기
5/8
^시작 anchor
(?=.[A-Z].[A-Z])2개의 대문자 반드시 포함
(?=.[!@#$&])특수문자 반드시 포함
(?=.[a-z].[a-z].*[a-z])3개의 소문자 반드시 포함
(?=.[0-9])(?=.[a-z])숫자와 소문자 반드시 포함
[A-Za-z\d@@!%*?&](대문자 or 소문자)와 특수문자 반드시 포함
.{8, 16}길이는 88 ~ 16자리
$끝 anchor

로그인, 회원가입, 비밀번호 재설정 로직을 구현 중 이메일, 비밀번호에 관한 유효성 검사를 하는 부분이 있어서 정규표현식의 예시들을 찾아봐서 적용했다.

예시로만 봐도 어느정도 문법이 예측이가서 바로 적용시키긴 했지만, 향후 제대로 문법 공부를 하는 것도 좋을 것 같다.

AuthModel에 static method를 통해 유효성 검사

  • Email
static public func emailValidCheck(email: String) -> Bool {
      let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
      let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
      return emailTest.evaluate(with: email)
  }
  • Password
    1. 8~20자 사이인지 검사
    2. 숫자, 영문 조합했는지 검사
    3. 특수문자 포함 검사
static public func registerPasswordValidCheck(password: String) -> RegisterPasswordCheckType {
      let lengthreg = ".{8,20}"
      let lengthtesting = NSPredicate(format: "SELF MATCHES %@", lengthreg)
      if lengthtesting.evaluate(with: password) == false {
          return RegisterPasswordCheckType.length
      }
      let combinationreg = "^(?=.*[A-Za-z])(?=.*[0-9]).{8,20}"
      let combinationtesting = NSPredicate(format: "SELF MATCHES %@", combinationreg)
      if combinationtesting.evaluate(with: password) == false {
          return RegisterPasswordCheckType.combination
      }
      let specialreg = "^(?=.*[!@#$%^&*()_+=-]).{8,20}"
      let specialtesting = NSPredicate(format: "SELF MATCHES %@", specialreg)
      if specialtesting.evaluate(with: password) == false {
          return RegisterPasswordCheckType.special
      }
      return RegisterPasswordCheckType.right
  }
profile
iOS Developer

0개의 댓글