Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MySQL
- 쿼리문
- watchmanresponse
- watchman error
- sockettimeout
- GitHub
- ADsP
- h2 error
- kotlin checkbox error
- 자료구조
- retrofit
- Kotlin
- 선택정렬
- kotlin recyclerview checkbox error
- expo-cli error
- 데이터 이해
Archives
- Today
- Total
Stand up lee
[Kotlin] 회원가입 유효성 검사 _ 정규표현식 사용 본문
회원가입할 때, 이메일이나 비밀번호 등 각각 지켜야할 조건들이 있다.
정규표현식을 활용해서 특정 규칙을 지정한다. (ex. 최소 6자리 이상, 숫자, 문자 1개 이상 포함 등)
► 정규 표현식 문법
- ^ : 문자열의 시작
- $ : 문자열의 끝
- . : 줄바꿈 제외 문자 한 개를 의미. '.'이 위치한 곳에 어떤 문자든지 1개의 문자가 들어감.
- [ ] : [ ] 사이에 있는 문자 중 한 개를 의미. (Ex. [abc]는 a, b, c 중 하나)
- [^] : not의 의미로, 대괄호에서 쓴다면 [^abc] : a, b, c 제외하고 나머지를 의미.
- | : or을 의미. a|b : a 또는 b.
- () : ( ) 안의 문자를 하나로 인식, 서브 패턴을 지정할 때 사용. abc|abd -> ab(c|d)로 바꿀 수 있음.
- re? : 앞의 문자가 0회 또는 1회 이상 등장. a? b는 a가 나올 수도, 없을 수도 있음. ab, b.
- re* : 앞의 문자가 0회 이상 등장. a*b : b, ab, aaab, aaab..
- re+ : 앞의 문자가 1회 이상 등장. a+b : ab, aab, aaab..
- re{n} : 앞의 문자가 n개 나옴. a {2} b : aab
- re{n,} : 앞의 문자가 n개 이상 나옴. a {2,} b : aab, aaab, aaaab..
- re{n, m} : 앞의 문자가 n개 이상 m개 이하로 나옴. a {1,3 } b : ab, aab, aaab
- \s : 공백 제거
- \t : 탭
- \d : 숫자, [0-9]와 동일
- \b : 단어의 경계, 문자 사이의 공백
- \w : 알파벳이나 숫자, [a-zA-Z0-9_]와 동일
- \W : 비단어 문자와 일치
► 정규 표현식 예시
- 숫자만 : ^[0-9]*$
- 영문자만: ^[a-zA-Z]*$
- 한글만 : ^[가-힣]*$
- 영어 & 숫자만 : ^[a-zA-Z0-9]*$
- Email : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
- Phone : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
- 주민등록번호 : \d{6} \- [1-4]\d{6}
코틀린에서는 Regex 클래스의 객체를 이용해서 정규 표현식을 처리한다
//이메일 유효성
Pattern.matches("[0-9a-zA-Z]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$", EmailAddr)
//핸드폰번호 유효성
Pattern.matches("^01(?:0|1|[6-9]) - (?:\\d{3}|\\d{4}) - \\d{4}$", Phone_num)
//비밀번호 여러가지 조건으로 유효성 검사
val pwPattern1 = "^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z[0-9]]{8,20}$" // 영문, 숫자
val pwPattern2 = "^(?=.*[0-9])(?=.*[$@$!%*#?&.])[[0-9]$@$!%*#?&.]{8,20}$" // 숫자, 특수문자
val pwPattern3 = "^(?=.*[A-Za-z])(?=.*[$@$!%*#?&.])[A-Za-z$@$!%*#?&.]{8,20}$" // 영문, 특수문자
val pwPattern4 = "^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[$@$!%*#?&.])[A-Za-z[0-9]$@$!%*#?&.]{8,20}$" // 영문, 숫자, 특수문자
Pattern.matches(pwPattern1, PW)
//주민번호 유효성
Pattern.matches("^\\d{6}[1-4]\\d{6}", ssnum)
//아이피 주소 유효성
Pattern.matches("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})", IPAddr)
+ 이메일은
android.util.Patterns.EMAIL_ADDRESS.matcher(Email).matches()
을 이용하여 보다 간편하게 유효성 검사가 가능하다.
'개발일기' 카테고리의 다른 글
[Kotlin] error : Recyclerview 스크롤시 Checkbox checked 에러 (0) | 2022.03.30 |
---|---|
[kotlin] error : 서버통신시 fail to connect to / java.net.SocketTimeoutException (0) | 2022.02.03 |
[Server] 세션, 쿠키, 토큰 정리 (0) | 2022.01.26 |
[Kotlin] Recyclerview의 Adapter에서 Fragment로 데이터 전달 (0) | 2021.09.22 |
[Git] Git Push Error _ error: src refspec master does not match any 해결 (0) | 2021.09.17 |