정규식 만드는 두 방법
JavaScript 가 두 정규식 문법:
- Literal:
/pattern/flags— 슬래시 사이 작성, 정의 시점 파싱. 더 빠름, 임베드 변수 X. - Constructor:
new RegExp('pattern', 'flags')— 함수 호출. 더 느리지만 변수 interpolate 가능.
패턴 고정이면 항상 literal. 동적 빌드 필요할 때만 constructor.
메서드
JavaScript 가 정규식 메서드를 RegExp 객체와 String 사이 분할:
regex.test(str)— boolean: 매칭?regex.exec(str)— 첫 매칭 (또는 /g 플래그면 iterate).str.match(regex)— 첫 매칭, 또는 /g 플래그면 모든 매칭.str.matchAll(regex)— 모든 매칭 iterator (/g 필수).str.replace(regex, replacement)— 첫 거 치환 (또는 /g 면 다).str.replaceAll(regex, replacement)— 다 치환 (정규식이 /g 필수).str.split(regex)— split.str.search(regex)— 첫 매칭 인덱스, 못 찾으면 -1.
알아둘 만한 quirk
/g 플래그가 stateful. /g 정규식이 exec 호출 가로질러 lastIndex 기억. "내 정규식이 첫 번엔 매칭하는데 두 번째 안 함" 버그 원인. matchAll 이 현대적, 더 안전한 대안.
Constructor 문자열의 백슬래시 더블링 필요. new RegExp('\\d+'), '\d+' 아님. Raw string 없는 Python 같은 문제 — JavaScript 는 정규식용 raw string 등가물 없음.