16. 정규 표현식
1) 정규 표현식 객체
- 자바스크립트의 기본 내장 객체 중 하나
- 생성 방법
var regExp1 = new RegExp('text');
var regExp2 = /text/;
- 정규 표현식 객체의 메소드
test() : 정규 표현식과 일치하는 문자열 존재 여부 반환
exec() : 정규 표현식과 일치하는 문자열 반환
2) 정규 표현식을 사용하는 String 객체의 메소드
match(regExp): 정규 표현식과 일치하는 부분 반환
replace(regExp, replacement): 정규 표현식과 일치하는 부분 변경
search(regExp): 정규 표현식과 일치하는 부분의 위치 반환
split(regExp): 정규 표현식을 기준으로 문자열을 잘라 배열 반환
3) 대체 문자
- replace() 메소드 사용
- 대체 문자 정규 표현식 기호
$& : 일치하는 문자열
$` : 일치하는 부분의 앞부분 문자열
$' : 일치하는 부분의 뒷부분 문자열
$1, $2, $3 : 그룹
- 사용 예시
'a'.replace(/a/, '+$&+'); // a -> +a+ 변환
'abcde'.replace(/(a)(b)(c)/, '+$1=$2=$3+'); // abcde -> +a=b=c+de
4) 플래그 문자
- 비교 범위 지정
g : 전역 비교
i : 대소문자 상관없이 비교
m : 여러 줄의 검사를 수행 // 앵커 문자 사용
- 생성 예시
var regExp = /Expression/im;
var regExp = new regExp('Expression', 'im');
5) 앵커 문자
- 문자열의 앞과 뒤를 구분해주는 정규 표현식 기호
^abc : 맨 앞 문자가 abc
abc$ : 맨 뒤 문자가 abc
- 줄바꿈이 존재하는 문자열 비교시 m 플래그 문자가 지정되어있으면 각 줄당 앵커를 확인
- 예시
'Javascript\njQuery\nAjax'.replace(/^j/igm, '+$&+');
예시 결과
"+J+avascript
+j+Query
Ajax"
6) 메타 문자
- 비교 범위를 표현
. : 모든 글자
[abc] : 괄호 안의 글자
[^abc] : 괄호 안의 글자 제외
[a-z] : 알파벳 a부터 z까지
[A-Z] : 알파벳 A부터 Z까지
[0-9] : 숫자 0부터 9까지
\d : 숫자
\w : 아무 단어(숫자 포함)
\s : 공백 문자(탭, 띄어쓰기, 개행)
\D : 숫자 아님
\W : 아무 단어 아님
\S : 공백 문자 아님
- 예시
'Javascript jQuery Ajax'.replace(/[aj]/igm, '+$&'); -> "+J+av+ascript +jQuery +A+j+ax"
'910209-2001211'.replace(/\d\d\d\d\d\d\-[1234]\d\d\d\d\d\d/, '+$&+'); -> "+910209-2001211+"
'910209-2001211999'.replace(/\d\d\d\d\d\d\-[1234]\d\d\d\d\d\d/, '+$&+'); -> "+910209-2001211+999"
7) 수량 문자
a+ : a가 적어도 1개 이상
a* : a가 0개 또는 여러 개
a? : a가 0개 또는 1개
a{5} : a가 5개
a{2,5} : a가 2~5개
a{2,} : a가 2개 이상
a{,2} : a가 2개 이하
8) 선택 문자
- (abc|def) : abc 또는 def 선택 // or
9) 정규 표현식 사용 예시
- 소문자, 숫자 한정
var regExp = /([0-9]|[a-z])/g;
'java'.replace(regExp, '').length -> 0
'Java'.replace(regExp, '').length -> 1
- 한글 한정
var regExp = /([가-힣])/g;
'자바'.replace(regExp, '').length -> 0
'Java'.replace(regExp, '').length -> 4
- 이메일 패턴 한정
var regExp = /\w+@\w+\.\w+/;
'java@java.com'.replace(regExp, '').length -> 0
'자바'.replace(regExp, '').length -> 2
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript 요약 정리] 15. 예외 처리(Exception handling) (0) | 2018.12.31 |
---|---|
[JavaScript 요약 정리] 13. 문서 객체 모델(DOM) (0) | 2018.12.31 |
[JavaScript 요약 정리] 12. 브라우저 객체 모델(BOM) (0) | 2018.12.30 |
[JavaScript 요약 정리] 11. 기본 내장 객체 (0) | 2018.12.30 |
[JavaScript 요약 정리] 10. 생성자(Constructor) 함수 (0) | 2018.12.30 |