- 문자열의 패턴을 표현하기 위한 도구
- 정규 표현식을 사용하면 문자열 안에서 특정 패턴을 가지는 문자열을 검색/추출/치환하는 처리를 직접 작성하지 않고 구현 가능
- Perl의 정규표현식을 받아들인 것(Perl5)
- ES3부터 표준
var reg = new RegExp("abc");
var reg = /abc/; // 정규 표현식 리터럴- 패턴 작성
- 일반문자 : 숫자(0~9), 알파벳(대,소문자)
- 특수문자 : +, . 등
- 정규 표현식에서 사용하는 특수문자 = 메타문자(meta character)
- 문자로서 사용 시 메타 문자 앞에 \ 문자를 붙여야함
- 일치(match) : 어떤 문자열이 정규 표현식이 표현하는 문자열의 패턴을 가지고 있을 때 그 문자열을 가리켜 정규 표현식과 일치한다고 한다
- 문자열이 정규 표현식과 일치하는지 확인하는 작업을 패턴 매칭이라 함
-
RegExp.prototype - test, exec
- test : 정규 표현식의 문자열이 일치하는지 뜻하는 논리값 반환
var reg = /cat/; console.log(reg.test("cats and dogs")); // true console.log(reg.test("Cat")); // false // Cat가 대문자이기 때문에 불일치
- exec : 정규 표현식과 일치하는 문자열을 검색하여 일치한 문자열을 배열로 반환
- 반환된 배열에는 index와 input 프로퍼티가 있음
- index 프로퍼티에는 가장 처음 일치한 위치가 들어가고 input 프로퍼티에는 일치한 문자열이 들어감
var reg = /Script/; var result = reg.exec("JavaScript"); console.log(result[0]); // Script console.log(result.index); // 4 console.log(result.input); // JavaScript
-
String.prototype - match, replace, search, split
- 정규 표현식의 핵심은 메타 문자를 사용한 문자열 패턴의 표현
-
일반 문자 = 리터럴 문자
-
정규표현식 리터럴 문자 리터럴문자|설명 ---|--- 유니코드문자|문자 그 자체를 뜻함(단, ^, $, , ., *, +, ?, (, ), [, ], {, }, |는 제외) \0|NULL문자(\u0000) \n|개행 문자(\u000A) \t|탭 문자(\u0009) \v|수직 탭 문자(\u000B) \f|다음 페이지 문자)(FF=\u000C) \r|캐리지 리턴 문자(CR=u000D) \xhh|16진수 hh로 지정된 ASCII 문자 \uhhh|16진수 hhhh로 지정된 유니코드 문자 \cX|제어 문자
-
^ $ \ . * + ? ( ) [ ] { } | -
이 메타 문자를 문자로 표현할 때는 메타 문자 앞에 \를 붙여 이스케이프
-
이 외에 자바스크립트 정규 표현식 패턴에서 이스케이프가 필요한 문자는 /
-
문자 클래스 : [...]
- 문자 클래스는 특정 문자 집합 안의 모든 단일 문자와 일치
- 문자 집합의 요소가 되는 문자 리터럴을 나열하여 대괄호로 묶어서 정의
- 대괄호 안에서 하이픈(-)을 사용하면 문자의 범위 지정 가능
[a-z] // 전체 소문자 중 문자 한 개 [abcx-z] // [a] [b] [c] [x] [y] [z] 중 문자 한 개 [a-zA-Z0-9] // 모든 알파벳과 숫자 중 문자 한 개
- 범위는 유니코드 번호 순서에 따라 결정
[\u3131-\u314E] // 한글 자음 한 개 [\u314F-\u3163] // 한글 모음 한 개 [\uAC00-\uD7A3] // 한글 음계 한 개 [\uF900-\uFAFF] // CJK 호환 한자 한 개
-
부정 문자 클래스 : [^...]
- 부정 문자 클래스는 대괄호 안에 들어 있지 않은 단일 문자와 일치
- [^...]은 [...]의 여집합의 문자 한 개와 일치