리터럴 표기법과 생성자, 두가지 방식을 통해 정규표현식 객체를 만들 수 있다.
var regExp = /pattern/flags
var regExp = new RegExp( pattern[, flags])
// 정규식 리터럴
/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');
new RegExp(/ab+c/i); // ES6
RegExp.exec( target : string ) : RegExpExecArray | null
정규식에 매칭되는 문자열을 반환하며 전역 플래그(g
)를 지정하여도 첫번째 매칭 대상만 반환한다.
const target = 'Is this all there is?';
const regExp1 = /is/;
const regExp2 = /is/g;
regExp1.exec(target); // ['is', index: 5, ...]
regExp2.exec(target); // ['is', index: 5, ...]
RegExp.test( target : string ) : boolean
문자열을 검색하여 일치하는 부분이 있으면 true
, 없으면 false
를 반환한다.
const target = 'Is this all there is?';
const regExp = /is/;
regExp.test(target) // true
String.match( regExp ) : Array | null
정규식에 매칭되는 문자열을 배열에 담아 반환한다. 전역 플래그를 사용하면 일치되는 모든 항목을 반환한다.
전역 플래그를 포함하지 않았을 경우, 특정 문자열을 캡쳐할 수 있는데 캡쳐된 문자열은 groups
속성의 객체 형태로 저장된다.
캡쳐할 문자열은 (?<name>캡쳐할 문자열)
형태로 지정할 수 있다.
const str = 'The sheep sleeps, and the dog barks';
let regExp = /(?<animal>sheep|dog) barks/;
console.log(str.match(regExp));
/*
(2) ['dog barks', 'dog']
0: 'dog barks',
1: 'dog',
groups: {animal: 'dog'}
index: 26,
input: 'The sheep sleeps, and the dog barks'
*/
String.replace( regExp : regExp | string, newSubstr : string) : string
매칭되는 문자열을 주어진 문자열로 교체한다.
String.search( regExp )
매칭되는 문자열이 있는지 검사한다. 있을 경우 첫 번째 매칭 대상의 위치값(인덱스)을, 없을 경우 -1을 반환한다.
String.split( [separator : string | regExp[, limit : number]] ) : Array
매칭되는 문자열(separator)을 기준으로 현재 문자열을 분할한다.
regexp.com 작성한 정규표현식의 매칭 결과를 실시간으로 확인해볼 수 있다.
regexper.com 작성한 정규표현식을 시각화하여 보여준다.
regular-expressions.info 정규표현식 자습서. (영문이라 보기 어렵지만 가끔 꺼내보자)