Javascript 와 RegExp 정규 표현식
자바스크립트를 처음부터 다시 공부해보려고 한다.
정규 표현식 은 formal language 이며, regular expression 혹은 rational expression 라 부르며, 약어로 regexp, regex 로 부른다.
formal language 은 특정한 법칙 들로 구성된 문자열 들의 집합 을 의미한다.
정규 표현식은 스티븐 클레이니 가 정규 집합(regular set)이라는 자신의 수학적 개념을 이용하여 정규 언어를 기술한 1956년이 기원이다.
정규표현식은 POSIX, PCRE 등 다양하게존재한다.
Javascript 는 XRegExp 을 따른다.
정규식 리터럴
정규식 리터럴 로 정규식을 생성 할 수 있다.
var reg = /test/;
RegExp 객체
정규실 리터럴이나 new RegExp 하면, RegExp 객체가 생성된다.
RegExp(pattern, flags?)
pattern 에는 정규표현식 문자열 이나 다른 RegExp 객체를 받을 수 있다.
flags 에는 g i m s y u 문자를 받을 수 있다.
1. g: 문자열 전체를 확인한다.
2. i: 문자열 에서 대소문자를 구분하지 않는다.
3. m: 문자열 에서 `^` , `$` 에서 개행문자를 허용한다.
4. s: 문자열 에서 `.` 에서 개행문자를 허용한다.
5. y: lastIndex 부터 일치하는 문자열을 반환한다.
6. u: Unicode 코드 포인트의 시퀀스로 처리한다.
dotAll
RegExp 객체 의 dotAll 가 true 로 설정되어 있는 경우
도트 특수 문자 `.` 가 `\n` `\r` (U+000A, U+000D, U+2028, U+2029) 을 허용한다.
multiline
RegExp 객체 의 multiline 가 true 로 설정되어 있는 경우 ^
및 $
의 문자열에서 개행 문자를 허용한다.
sticky
RegExp 객체 의 sticky 가 true 로 설정되어 있는 경우 lastIndex 부터 일치하는 값을 반환한다.
RegExp.prototype
RegExp.prototype.exec
일치하는 문자열을 배열형태로 반환한다.
- 배열의 첫번째는 일치하는 문자
- 이후는 () 의 부분 문자열은 일치 문자
- index 는 일치하는 문자열의 index
- input 는 입력된 문자열
발견에 실패하면 null 을 반환한다.
RegExp.prototype.test
일치하는 문자열 존재여부를 boolean 으로 반환한다.
RegExp Last Index
RegExp 객체로 생성 하였고, global 가 true 로 설정되어 있는 경우, 이전 lastIndex 를 저장한다.
lastIndex 를 기준으로 다시 검색한다.
찾지 못할경우 null 을 반환한다.
RegExp Symbol
RegExp[@@match]
문자열에 match 되는 문자열을 반환한다.
match 되는것이 없다면 null 이 반환된다.
RegExp[@@matchAll]
문자열에 match 되는 Iterator 를 반환한다.
match 되는게 없다면 빈 Iterator 를 반환한다.
RegExp[@@replace]
문자열에 match 되는 값을 주어진 값으로 변경한 새로운 문자열을 반환한다.
match 되는 값이 없다면, 입력한 문자열을 그대로 반환한다.
RegExp[@@search]
문자열에 match 되는 첫번째 index 를 반환한다.
찾지 못하면 -1 을 반환한다.