정규 표현식
문자열 매칭 기능 제공.
정규식 만들기
리터럴 문법 또는 RegExp 생성자 사용.
동적으로 정규식을 만들 때 RegExp 생성자를 사용한다.
const re1 = /going/;const re2 = 'going';
정규식 검색
문자열에 search, match 메소드 사용
정규식에 exec, test 메소드 사용
정규식 리터럴을 그대로 사용해도 가능하다.
String.prototype.match or RegExp.prototype.test
정규식을 사용한 문자열 교체
replace과 함께 사용 가능.
/area|a|link|script|source/ig
| : 대체
ig : 대소문자 가리지 않음
g : 전체, 없으면 일치하는 첫 번째만 반환
^ : 앞에 ^ 붙으면 문자셋 제외
자주쓰는 문자셋
\d : 0-9\D : ^0-9\s : \t\v\n\r // 탭, 스페이스, 세로 탭, 줄바꿈\S : ^ \t\v\n\r\w : a-zA-Z_\W : ^a-zA-Z_
반복
문자셋의 다음 + 는 그 앞에 있는 요소가 하나 이상 있어야 한다는 뜻. 반복 메타 문자
n : 정확히 n 개 | /d5/n : 최소한 n 개 | /\d5/ // 5자리 이상n m : n개 이상 m개 이하 | /\d25/ // 2~5개? : 0개 또는 1개 01 | /a-z\d?/i // 글자가 있고 그다음에 숫자가 없거나 한개 있는 경우* : 숫자는 상관 없다 없어도 된다 | /a-z\d*/i // 글자가 있고 그다음에 숫자가 없거나 있는 경우+ : 하나 이상 | /a-z\d+/i // 글자가 있고 그다음에 숫자가 1개 이상
마침표와 이스케이프
정규식에서 마침표는 줄바꿈 문자를 제외한 모든 문자에 일치하는 특수 문자이다.
정규식 특수 문자를 이스케이프해서 일반 문자로 사용하려면 그 앞에 \ 를 붙이면 된다.
와일드 카드
\s\S
그룹
그룹은 괄호로 만든다.
?:subexpression // subexpression 패턴 제외?:https?)? // s? : s는 옵션.
위치 지정
^는 문자열의 맨 처음, $는 문자열의 마지막
const input = "One line\nTwo lines\nTree lines\nFour";const beginnings = input;const endings = input;
룩어헤드
입력을 소비하지 않는 독립적 정규식
{return //;}
동적으로 정규식 만들기
const userRegex = `@(?:)\\b', 'g');