정규 표현식
정규 표현식
특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
JS 에선 RegExp 객체와 문자열 메서드 조합해 사용
패턴과 선택적으로 사용할 수 있는 플래그(flag) 로 구성
-
문법
두 문법 다 내장 클래스 RegExp 의 인스턴스가 됨
-
‘긴’ 문법
regExp = new RegExp("pattern", flags)
상황에 따라 동적으로 생성된 문자열 가지고 만들 때 사용됨
-
‘짧은’ 문법
regExp = /pattern/;
regExp = /pattern/gmi
”/” 는 정규 표현식을 생성하고 있다는 것 알려줌
중간에 표현식을 넣을 수 없음 (정적 문법)
패턴을 알고 있을 때 사용됨
-
-
플래그
검색에 영향을 줌
-
지원 플래그
-
i : 대,소문자 구분 없이 하나만 검색
-
g : 패턴과 일치하는 모든 것 찾음
-
m : 다중 행 모드 활성화
-
s : ‘.’이 개행 문자 \n 도 포함하도록 ‘dotall’ 모드 활성화
-
u : 유니코드 전체 지원으로 서로게이트 쌍 올바르게 처리 가능
-
y : 문자 내 특정 위치에서 검색 진행하는 ‘sticky’ 모드 활성화
-
-
-
str.match
str.match(regexp) 호출 시 문자열에서 str 에서 regexp 와 일치하는 것 찾음
-
모드
-
플래그 g 붙으면 패턴과 일치하는 모든 것 담은 배열 반환
-
g 붙지 않은 경우 패턴에 맞는 첫 번째 배열 반환, 배열 인덱스 0에 저장되며 프로퍼티에 상세한 추가 정보 저장됨 (정규 표현식 괄호로 둘러쌀 경우 배열에 0 이외에 다른 인덱스 있을 수 있음)
-
패턴과 일치하는 부분 문자열 찾지 못한 경우 null 반환
-
-
-
str.replace 로
str.replace(regexp, replacement)로 사용
str 내 문자열 중 regexp 에 일치하는 부분 문자열 replacement로 교체
플래그 g 있을 시 모든 부분 문자열 교체됨
-
regexp.test 로 일치여부 확인
regexp.test(str)로 사용
일치하는 부분 문자열 하나라도 존재/존재하지 않을 시 true/false 사용