EEYatHo 앱 깎는 이야기

Swift ) 한글, 영어, 숫자, 밑줄 정규식 본문

iOS, Swift

Swift ) 한글, 영어, 숫자, 밑줄 정규식

EEYatHo 2021. 3. 5. 11:15
반응형

 

정규식과

NSRegularExpression.matches 를 이용하면 된다.

 

한글, 영어, 숫자, 밑줄만 허용하는 정규식 :

"^[가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z0-9_]$"

 

입력받은 문자열이 정규식에 만족하지는 체크하는 함수
알맞은 문자열 : return true

부적합한 문자열 : return false

private func nameValidation(text: String) -> Bool {
    // String -> Array
    let arr = Array(text)
    // 정규식 pattern. 한글, 영어, 숫자, 밑줄(_)만 있어야함
    let pattern = "^[가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z0-9_]$"
    if let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive) {
        var index = 0
        while index < arr.count { // string 내 각 문자 하나하나 마다 정규식 체크 후 충족하지 못한것은 제거.
            let results = regex.matches(in: String(arr[index]), options: [], range: NSRange(location: 0, length: 1))
            if results.count == 0 {
                return false
            } else {
                index += 1
            }
        }
    }
    return true
}

 

Comments