본문 바로가기

Programming diary

11. September 8, 2020

 

정규표현식 (Regular Expression)


1. 특정 문자의 매칭 결과를 판단하기 위한 방식이다.

2. 생성방법
1) 정규식 패턴이 변하지 않는 경우(/정규식/)
var regExp = /ab+/;
2) 정규식 패턴이 변하는 경우(new RegExp('정규식'))
var regExp = new RegExp('ab+');

3. Meta 문자
 1) var regExp = /x/;  x
 2) var regExp = /x|y/;  x 또는 y
 3) var regExp = /.x/;  .(임의의 한 문자) x로 끝남
 4) var regExp = /^x/;  x 로 시작
 5) var regExp = /x$/;  x 로 끝
 6) var regExp = /x*/   x 를 0번 이상 반복
 7) var regExp = /x+/;  x 를 1번 이상 반복
 8) var regExp = /(xy)/;  xy 그룹화
 9) var regExp = /x{n}/;  x를 n번 반복
10) var regExp = /x{n,}/;  x를 n번 이상 반복
11) var regExp = /x{n,m}/;  x를 n번 이상 m번 이하 반복

4. 주요 Flag
1) Flag : 정규식 뒤에 덧붙이는 명령
2) g : global, 문자열 전체에서 모든 패턴을 찾는다.
3) i : ignore case, 대소문자의 구분 없이 패턴을 찾는다.
4) m : multiple line, 문자열의 줄이 바뀌어도 패턴을 찾는다.
5) 예시
var regExp = /a+/g;
var regExp = /a+/i;
var regExp = /a+/m;
var regExp = /a+/gi;

5. 문자클래스
 1) var regExp = /[xy]/;  x, y 중 하나
 2) var regExp = /[^xy]/;  x, y 를 제외한 문자 중 하나
 3) var regExp = /^[xy]/;  x, y 중 하나로 시작
 4) var regExp = /[a-z]/;  a ~ z 중 하나 (소문자)
 5) var regExp = /[A-Z]/;  A ~ Z 중 하나 (대문자)
 6) var regExp = /[0-9]/;  0 ~ 9 중 하나 (숫자)
 7) var regExp = /[가-힣]/;  0 ~ 9 중 하나 (한글)
 8) var regExp = /[a-zA-Z]/;  a ~ z 또는 A ~ Z 중 하나 (영문)

 9) var regExp = /\s/;  space  공백문자
10) var regExp = /\S/;  not space  공백문자 아님
11) var regExp = /\d/;  digit  0 ~ 9 숫자
12) var regExp = /\D/;  not digit  0 ~ 9 숫자 아님
13) var regExp = /\w/;  word  대문자, 소문자, 밑줄(_)
14) var regExp = /\W/;  not word  대문자, 소문자, 밑줄(_) 아님




주요 정규식

1. 아이디 중복 체크
1) 첫 글자는 소문자이다.
2) 5 ~ 20 사이의 소문자나 숫자를 사용한다. []가 2번들어갔으므로 1번 추가해서 5~20 {4,19}
var regExpID = /^[a-z][a-z0-9]{4,19}$/;  // 첫 글자는 소문자이다.(^[a-z])


2. 비밀번호 체크
1) 8 ~ 20 사이의 대문자, 소문자, 숫자, 특수문자(~!@#$%^&*)를 사용한다. 여기는 최종 돌아가는 []가 1번 그래서 그대로 8~20 {8,20} 
2) 각각 1개 이상 포함해야 한다.
var regExpPW = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*])[A-Za-z0-9~!@#$%^&*]{8,20}$/;
3) 8자 이상. 대문자, 소문자, 특수문자, 숫자 사용. 소문자, 숫자는 필수. 
var regExpPW = /^(?=.*[a-zA-Z~!@#$%^&*()_+|<>?:{}])(?=.*[0-9]).{8,}$/; 

3. 이메일
var regExpEMAIL = /^[a-z][a-z0-9\-\_]+@[A-Za-z0-9]{3,}(\.[A-Za-z]{2,6}){1,2}$/;

4. 핸드폰
var regExpPHONE = /^01[0|1|6|9]-[0-9]{3,4}-[0-9]{4}$/;

'Programming diary' 카테고리의 다른 글

13. September 27, 2020  (0) 2020.09.28
12. September 13, 2020  (0) 2020.09.13
10. September 6, 2020  (0) 2020.09.06
9. September 3, 2020  (0) 2020.09.03
8. September 1, 2020  (0) 2020.09.01