안녕하세요. 미닛메이드 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로 반환되는 함수를 만들어 볼 수 있습니다!
저는 앱을 만들 때 회원가입 부분에서 정규표현식을 많이 사용했는데
만약 정규표현식을 사용하지 않는다면
이런 조건들도 서버에 넘겨서 서버에서 맞는지 아닌지를 판단을 받아야 하는데
정규표현식을 사용하면 이런 규칙은 문법으로 판단하고 ,
중복 여부만 서버에서 판단해주면 되니깐
서버에서는 처리해줄 상황이 줄고
저도 서버와 통신하는 시간이 많이 줄겠죠?? ☺️
정규표현식은 다양한 곳에서 사용될 수 있으니
꼭 한번 적용해보는 거 추천드립니다!
혹시 틀린 점 있거나 질문은 댓글 남겨주세요!!
감사합니다 :)
'Develop > Swift' 카테고리의 다른 글
[Swift] WWDC21 Get ready for iCloud Private Relay (0) | 2021.12.21 |
---|---|
[Swift] WWDC21 Explore Nearby Interaction with third-party accessories (2) | 2021.09.14 |
[Swift] UIButton 코드로 직접 구현하기 (Create UIButton programmatically in Swift ) (0) | 2021.03.30 |
[Swift/iOS] 카메라로 사진 찍기 및 앨범에서 이미지 가져오기 (taking a picture using the camera) (4) | 2020.12.30 |
[Swift] instantiateViewController를 사용해서 뷰 생성하기 (4) | 2020.10.18 |
Comment