반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • swift
    • xcode
    • ios
    • 개발
    • 프로그래밍
    • swfit
    • Java
    • kotlin
    • Android
    • 타입
    • JSP
    • 공부
    • level1
    • 코딩테스트
    • 예제
    • 프로그래머스
    • map
    • reduce
    • IT
    • 구축

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    Swift에서 정규식 사용하기
    Language/Swift

    Swift에서 정규식 사용하기

    2021. 4. 20. 10:22
    반응형

     서론

     Swift 언어 자체에서는 정규식을 지원하지 않아서 별도의 클래스를 이용해야 합니다.

    NSPredicate는 콜렉션 안의 내용을 검색하거나 필터링하는 용도로 많이 사용되구요

    NSRegularExpression가 유니코드 문자열에 적용되는 정규식을 표현하므로,

    NSRegularExpression를 사용한 정규식 표현들을 알아보도록 하겠습니다.

     

    NSRegularExpression의 정규식 메타 문자

    * u으 = uhhhh           \x{으} = \xhh             엔 = n           무늬 = pattern

    정규식 연산자

    *엔 = n

    템플릿 일치 양식

    * 엔 = n

     

    플래그 옵션

    * 패턴은 i , x, s, m, w 순 입니다.

    * 

     통으로 변역기를 돌려서 표현이 좀 이상할수도 있습니다 ^^;;

    표현식은 공식 문서 참고하시면 되겠습니다.

    developer.apple.com/documentation/foundation/nsregularexpression/

     

    Apple Developer Documentation

     

    developer.apple.com

     

     사실 저걸 다 외울필요는 없고 어떻게 쓰는구나 정도만 알면 된다고 생각합니다.

    정규식 양식은 검색하면 널려있으니까요....ㅎ

    이제 이 정규식을 사용해서 id/pw 및 email 입력에 대해 검수하는 프로그램을 간단히 구현해보도록 하겠습니다.

     

    ID형식 검수

     6자리 이상의 소문자, 숫자로만 구성된 입력인지 검사하는 정규식입니다.

    //영문 소문자-숫자로만 구성된 6자리 이상의 문자열인지 검사
    func idRegularExpression(_ input: String) -> Bool{
        let pattern = "^[a-z0-9]{6,}$"
        let regex = try? NSRegularExpression(pattern: pattern)
        if let _ = regex?.firstMatch(in: input, options: [], range: NSRange(location: 0, length: input.count)) {
            print("정규식 통과")
            return true
        }
        print("유효하지 않은 id 형식입니다.")
        return false
    }

    결과

    잘 작동하는 군요!

     


     

    func sginUpRegularExpression(_ input: String, _ type: Int) -> Bool{
        var pattern: String = ""
        switch type {
        case 1:
            pattern = "^[a-z0-9]{11,}$"
        case 2:
            //최소 8자, 최소 하나의 영문 대문자/소문자 및 숫자 및 특수문자
            pattern = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*]).{8,20}"
        case 3:
            pattern = "^[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,20}$"
        default:
            print("[sginUpRegularExpression function] type error")
            return false
        }
        
        let regex = try? NSRegularExpression(pattern: pattern)
        if let _ = regex?.firstMatch(in: input, options: [], range: _NSRange(location: 0, length: input.count)){
            print("정규식 통과")
            return true
        }
        return false
    }

     type으로 받는 정수값에 따라 패턴을 결정하게 작성하였습니다.

    type이 1은 Id, 2는 pw, 3은 이메일을 검수하게 되겠네요!

     

     

     

     

     

     

     

    반응형
    저작자표시 (새창열림)

    'Language > Swift' 카테고리의 다른 글

    [Swift] 고차함수 Map, Filter, Reduce  (0) 2021.04.05
    [Swift] GCD로 경마 구현해보기  (0) 2021.03.24
    Swift GCD(Grand Central Dispatch) [5] - Group, WorkItem  (0) 2021.03.23
    Swift GCD(Grand Central Dispatch) [4] - RunLoop 실행과 종료  (0) 2021.03.23
    Swift GCD(Grand Central Dispatch) [3] - 예제 사용해보기  (0) 2021.03.22
      'Language/Swift' 카테고리의 다른 글
      • [Swift] 고차함수 Map, Filter, Reduce
      • [Swift] GCD로 경마 구현해보기
      • Swift GCD(Grand Central Dispatch) [5] - Group, WorkItem
      • Swift GCD(Grand Central Dispatch) [4] - RunLoop 실행과 종료
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바