본문 바로가기
프로그래밍 언어/Modern JavaScript

[JavaScript] 정규표현식

by cogito21_cpp 2024. 8. 9.
반응형

정규표현식

- 정규표현식(regular expression)은 문자열에서 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 검색 패턴

- 정규 표현식 생성: 정규표현식 리터럴을 이용한 생성/RegExp 객체를 이용한 생성

- 정규표현식 리터럴: 슬래시로 시작하여 슬래시로 끝남. 필요시 플래그를 추가하여 검색 설정을 변경

/검색패턴/플래그

/* 정규표현식 리터럴을 이용한 생성 */
var regStr = /a+bc/; 
/* RegExp 객체를 이용한 생성 */
var regObj = new RegExp("a+bc");

- 단순 검색: String 메서드 사용

메서드 설명
String.search(정규표현식) 단순한 패턴 검색. 일치하는 문자열 중 첫 번쨰 문자열의 인덱스 반환
String.match(정규표현식) 문자열에서 인수로 전달받은 정규표현식과 일치하는 문자열을 모두 찾아서 배열로 반환
String.replace(정규표현식, "$2 $3 $1") 첫 번째 부분 문자열을 맨 마지막으로 이동

- 플래그: 정규표현식 생성시 플래그를 사용하여 기본 검색 설정 변경. 추후 변경 불가

플래그 설명
i 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정
g 검색 패턴을 비교할 떄 일치하는 모든 부분을 선택하도록 설정
m 검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정
y 대상 문자열의 현재 위치부터 비교를 시작하도록 설정

- 특수 문자: 복잡한 조건을 사용하기 위해 사용

특수 문자 설명
\ 역슬래시 다음에 일반문자가 나오면 이스케이프 문자. 특수 문자가 나오면 일반 문자로 해석
\d 숫자를 검색. [0-9]와 동일
\D 숫자가 아닌 문자를 검색. [^0-9]와 동일
\w 언더스코어를 포함한 영문자 및 숫자를 검색. [A-Za-z0-9_]와 동일
\W 언더스코어, 영문자, 숫자가 아닌 문자를 검색.[^A-Za-z0-9_]와 동일
\s 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자를 검색
\S 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자가 아닌 문자를 검색
\b 단어의 맨 앞이나 맨 뒤가 패턴과 일치하는지를 검색
\xhh 16진수 hh에 해당하는 유니코드 문자를 검색
\uhhhh 16진수 hhhh에 해당하는 유니코드 문자를 검색

- quantifier: 특수 문자로 수량을 표현하는 양화사. 양화사 뒤에 ?사용시 가장 적은 문자를 가지도록 변경

양화사 설명
n* 바로 앞의 문자가 0번 이상 나타나는 경우 검색. {0,}와 동일
n+ 바로 앞을 문자가 1번 이상 나타나는 경우 검색. {1,}와 동일
n? 바로 앞을 문자가 0번 또는 1번만 나타나는 경우 검색. {0, 1}와 동일

- 괄호

괄호 설명
a(b)c 전체 패턴을 검색후 괄호안에 명시된 문자열을 저장
[abc] 꺾쇠 괄호 안에 명시된 문자 검색
[0-9] 꺾쇠 괄호 안에 명시된 숫자 검색
[\b] 백스페이스 문자 검색
{n} 앞을 문자가 정확히 n번 나타나는 경우 검색
{m, n} 앞의 문자가 최소 m번 이상 최대 n번 이하로 나타나는 경우 검색

- 위치 문자: 패턴을 검색할 단어의 위치를 지정

위치 문자 설명
^a 단어의 맨 앞에 위치한 패턴만 검색
a$ 단어의 맨 뒤에 위치한 패턴만 검색

RegExp 객체

- RegExp 객체는 정규표현식을 구현한 JavaScript 표준 내장 객체

- 검색 패턴을 나타내는 정규표현식은 따옴표나 슬래시로 감싸야함

- 모든 RegExp 인스턴스는 RegExp.prototype으로부터 메서드와 프로퍼티를 상속 받음

프로퍼티/메서드 설명
new RegExp(pattern[, flag]) RegExp 객체 생성
RegExp.prototype.global 검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정하는 플래그인 'g'
RegExp.prototype.ignoreCase 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정하는 플래그인 'i'
RegExp.prototype.multiline 검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정하는 플래그인 'm'
RegExp.prototype.source 검색 패턴이 포함하고 있는 문자열
RegExp.prototype.exec(target) 인수로 전달된 문자열에서 특정 패턴을 검색하여 패턴과 일치한 문자열 반환
RegExp.prototype.test(target) 인수로 전달된 문자열에서 특정 패턴과 일치하는 문자열이 있는지 검색하여 Boolean 반환
RegExp.prototype.toString() RegExp 객체의 정규표현식과 같은 의미를 가지는 정규표현식 리터럴 문자열 반환

 

반응형

'프로그래밍 언어 > Modern JavaScript' 카테고리의 다른 글

[JavaScript] 이벤트  (0) 2024.08.09
[JavaScript] BOM  (0) 2024.08.09
[Javascript] 예외처리  (0) 2024.08.09