[Swift] Swift에서 다양한 정규표현식(Regular Expression) 사용해보기

 

안녕하세요. 미닛메이드 Minnit 입니다😌

 

이번에는 Swift에서 자주 사용되는 정규표현식에 대해 알아보고 적용까지 해보겠습니다!

 


먼저, 정규표현식이란 무엇일까요?

 

🔗 사용자가 규칙을 세워 패턴을 정의해둔 String 🔗 이라고 할 수 있습니다 ~

 

 

만약 우리가 전화번호 정규표현식을 만든다고 하면

 

🐙 11자로 고정되어있다.

🐙 숫자로만 이뤄져 있다.

 

라는 규칙을 세워볼 수 있겠죠?

 

let phoneRegEx = "[0-9]{11}"

 

[ ] 안에는 표현식을 이루는 문자 타입을 넣어주시면 됩니다!

 

 

숫자 :  [0-9]

한글 : [가-힣]

영어 : [A-Za-z]

특수문자 : [!_@$%^&+=]

 

 

그리고 뒤의 { } 안에는 몇 자로 이뤄져 있는지 써주시면 됩니다!

전화번호는 11자로 고정되어 있기 때문에 {11}로 썼지만

만약 고정되지 않는 수이고 범위가 존재한다면

{8,12}로 써주면 8자 ~ 12자로 구성된다 라는 표현입니다 

 

 

조금 더 나아가서

 

🐙 010으로 시작한다 

🐙 010 - **** - **** ( 숫자 사이에 작대기'-' 가 들어간다)

라는 조건 패턴을 추가해볼까요?

 

let phoneRegEx = "^010-?([0-9]{4})-?([0-9]{4})"

여기서 ^시작을 의미합니다

그래서 ^010 은 010으로 시작한다를 뜻하는 거죠!

 

 

이제 많이 사용되는 정규표현식 예제를 몇 개 보여드리겠습니다 😌

 

 

✅ 이메일 정규표현식 

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

 

✅ 아이디 정규표현식 

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

 

✅ 닉네임 정규표현식 

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

 

✅ 비밀번호 정규표현식 

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

 

 

원하는 조건이 다르다면 { } 와 [ ] 안의 내용을

조금씩 바꿔가면서 사용해볼 수 있겠죠? 😎

 

 

그리고 이런 정규표현식을 실제로 적용해본다면


func isValidPhone(phone: String?) -> Bool {
        guard phone != nil else { return false }

        let phoneRegEx = "[0-9]{11}"
        let pred = NSPredicate(format:"SELF MATCHES %@", phoneRegEx)
        return pred.evaluate(with: phone)
    }
    

이렇게 string값을 입력받고 맞는지 틀리는지

True False로 반환되는 함수를 만들어 볼 수 있습니다!

 

 

저는 앱을 만들 때 회원가입 부분에서 정규표현식을 많이 사용했는데

 

만약 정규표현식을 사용하지 않는다면 

 

이런 조건들도 서버에 넘겨서 서버에서 맞는지 아닌지를 판단을 받아야 하는데

정규표현식을 사용하면 이런 규칙은 문법으로 판단하고 ,

중복 여부만 서버에서 판단해주면 되니깐

 

서버에서는 처리해줄 상황이 줄고

저도 서버와 통신하는 시간이 많이 줄겠죠?? ☺️

 


정규표현식은 다양한 곳에서 사용될 수 있으니

꼭 한번 적용해보는 거 추천드립니다!

 

혹시 틀린 점 있거나 질문은 댓글 남겨주세요!!

감사합니다 :)