정규식, Regular Expression
문자열을 검색하고 대체하는 데 사용 가능한 일종의 형식 언어(패턴)이다.
간단한 문자 검색부터 이메일,패스워드 검사 등의 복잡한 문자 일치 기능 등을 정규식 패턴으로 빠르게 수행할 수 있다. 단, 정규식 패턴이 수행 내용과 매치가 잘 안되어 가독성이 많이 떨어지는 단점이 있다.
const regexp1 = new RegExp("표현", "옵션");
const regexp1 = new RegExp("abc", "gi");
RegExp 생성자 함수를 호출하여 사용할 수 있다. 생성자 함수를 사용하면 정규식이 실행 시점에 컴파일된다. 정규식의 패턴이 변경될 수 있는 경우, 혹은 사용자 입력과 같이 다른 출처로부터 패턴을 가져와야 하는 경우에는 생성자 함수를 사용해야한다!.
const regexp1 = /^abc/
// /표현식/
const regexp2 = /^abc/gi/
// /표현식/플래그/
정규표현식은 /
로 감싸진 패턴을 리터럴로 사용한다. 정규식 리터럴은 스크립트가 불러와질 때 컴파일된다. 만약 정규식이 상수라면, 이렇게 사용하는 것이 성능을 향상시킬 수 있다.
const str = `
010-1234-5678
thesecon@gamil.com
http://www.omdbapi.com/?apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
aabbbcccccdd
`;
메소드 | 문법 | 설명 |
---|---|---|
test | 정규식.test(문자열) | 일치 여부(Boolean) 반환 |
match | 문자열.match(정규식) | 일치하는 문자의 배열(Array) 반환 |
replace | 문자열.replace(정규식,대체문자) | 일치하는 문자를 새로운 문자로 대체 |
플래그 | 설명 |
---|---|
g | 모든 문자 일치(global) |
i | 영어 대소문자를 구분 않고 일치 (ignore case |
m | 여러 줄 일치 (multi line) |
패턴 | 설명 |
---|---|
^ab | 줄(Line) 시작에 있는 ab와 일치 |
ab$ | 줄(Line) 끝에 있는 ab와 일치 |
. | 임의의 한 문자와 일치 |
a|b | a 또는 b와 일치 |
ab? | b가 없거나 b와 일치 |
{3} | 3개 연속 일치 |
{3,} | 3개 이상 연속 일치 |
{3,5} | 3개 이상 5개 이하 (3~5개) 연속일치 |
[abc] | a 또는 b 또는 c |
[a-z] | a부터 z 사이의 문자 구간에 일치 (영어 소문자) |
[A-Z] | A부터 Z 사이의 문자 구간에 일치 (영어 대문자) |
[0-9] | 0부터 9 사이의 문자 구간에 일치 (숫자) |
[가-힣] | 가부터 힣 사이의 문자 구간에 일치 (한글) |
\w | 63개 문자(Word, 대소영문52개 + 숫자10개 + _)에 일치 |
\b | 63개 문자에 일치하지 않는 문자 경계(Boundary) |
\d | 숫자(Digit)에 일치 |
\s | 공백(Space, Tab 등)에 일치 |
(?=) | 앞쪽 일치(Lookahead) |
(?<=) | 뒤쪽 일치(Lookbehind) |