관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] Regular Expression(정규 표현식, 이메일, 패스워드, 핸드폰 번호) 본문

iOS 응용 (swift)

[iOS - swift] Regular Expression(정규 표현식, 이메일, 패스워드, 핸드폰 번호)

jake-kim 2021. 7. 3. 23:06

Regular Expression(정규 표현식)

  • 특정한 규칙을 가진 문자열의 집합을 표현
  • 주로 문자열 검색이나 email, phone number, password에서 정규성 검사에 사용

문법

표현 정규식 의미
^ 시작 앵커
(?=.*[A-Z].*[A-Z]) 문자열에서 대문자가 2개 있는지
(?=.*[!@#$%^]) 문자열에서 선언한 특수 문자가 존재하는지
(?=.*[0-9].*[0-9]) 문자열에서 숫자가 2개 포함되어 있는지
(?=.*[a-z].*[a-z].*[a-z]) 문자열에서 소문자가 3개 이상 포함되어 있는지
.{10} 문자열의 길이가 10인지
& 끝 앵커

이메일 정규식 표현

let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
  • @앞에는 대문자, 숫자, 소문자, 특수문자(._%+-)가 포함 가능
  • \\. 콤마를 표현하기 위해서 \\사용
  • @뒤로는 대문자, 소문자, 숫자 그리고 . 기준으로 맨 마지막 문자가 2~64길이

핸드폰 번호 정규식 표현

let regex = "^01[0-1, 7][0-9]{7,8}$"
  • ^ 는 시작 앵커, $ 는 끝 앵커
  • 핸드폰 번호는 01로 시작
  • 01다음에는 0,1,7 가능
  • 그다음에 오는 숫자는 0~9 가능하고 7자리에서 8자리만 가능

패스워드 정규식 표현

let regex = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+=-]).{8,50}" // 8자리 ~ 50자리 영어+숫자+특수문자
  • ^ 첫 앵커, $ 끝 앵커
  • (?=.* 로 시작: 조건문
  • (?=.*...)(?=.*...)이와 같이 묶인것은 And조건이 아닌 Or조건
  • (?=.*[A-Za-z]) 대문자나 소문자 가능
  • (?=.*[0-9]) 숫자 가능

* 더욱 구체적인 개념은 해당 포스팅 글 참고

* Regular Expression과 Predicate를 이용하여 이메일, 핸드폰번호, 패스워드 정규성 확인: https://ios-development.tistory.com/592

Comments