정규표현식은 일정한 패턴을 가진 문자열의 집합을 표한하기 위해 사용하는 형식언어로 특정 패턴과 일치하는 문자열을 검색하거나 추출, 치환할 수 있는 패턴 매칭 기능을 제공한다.
const target = 'Is this all there is?'
const regExp = /is/
regExp.exec(target) // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]
인수로 전달받은 문자열에 대해 정규표현식의 매칭결과를 배열로 반환한다.
g 플래그를 지정해도 첫번째 결과만 반환한다.
const target = "Is this all there is?";
const regExp = /is/;
regExp.test(target); // true
인수로 전달받은 문자열에 대해 정규 표현식이 패턴을 검색하여 매칭 결과를 불리언 값으로 반환한다.
const target = "Is this all there is?";
const regExp = /is/;
const regExp2 = /is/g;
target.match(regExp) // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]
target.match(regExp2) // [ 'is', 'is' ]
대상 문자열과 인수로 전달받은 정규표현식의 매칭결과를 배열로 반환한다.
exec와는 달리 g플래그가 지정되면 모든 매칭 결과를 배열로 반환한다.
const target = "Is this all there is?";
const regExp = /is/;
const regExp2 = /is/g;
const regExp3 = /is/i;
const regExp4 = /is/ig
target.match(regExp) // [ 'is', index: 5, input: 'Is this all there is?', groups: undefined ]
target.match(regExp2) // [ 'is', 'is' ]
target.match(regExp3) // [ 'Is', index: 0, input: 'Is this all there is?', groups: undefined ]
target.match(regExp4) // [ 'Is', 'is', 'is' ]
정규 표현식의 문자 또는 문자열을 지정하면 검색 대상 문자열에서 패턴으로 지정한 문자 또는 문자열을 검색한다. 플래그를 통해 특정 조건을 추가할 수 있다.
const target = "Is this all there is?";
const regExp = /.../g // 임의의 3자리 문자열을 전역검색
target.match(regExp) // ['Is ', 'thi', 's a', 'll ', 'the', 're ', 'is?']
.은 임의의 문자 1개를 의미한다.
const target = 'A AA b BB Aa Bb AAA'
const regExp = /A{1,2}/g
const regExp2 = /A{2}/g
const regExp3 = /A{2,}/g
const regExp4 = /A+/g
const regExp5 = /Aa?/g
target.match(regExp) // [ 'A', 'AA', 'A', 'AA', 'A' ]
target.match(regExp2) // [ 'AA', 'AA' ]
target.match(regExp3) // [ 'AA', 'AAA' ]
target.match(regExp4) // [ 'A', 'AA', 'A', 'AAA' ]
target.match(regExp5) // ['A', 'A', 'A', 'Aa', 'A', 'A','A' ]
{m,n}은 앞선 패턴이 최소 m번 최대 n번 반복되는 문자열을,
{n}은 앞선 패턴이 n번 반복되는 문자열을,
{n,}은 앞선 패턴이 n번 이상 반복되는 문자열을,
+는 앞선 패턴이 1번 이상 반복되는 문자열을,
?는 앞선 패턴이 0번 이상 반복되는 문자열을 의미한다.
const regExp = /A|B/g;
const regExp2 = /A+|B+/g;
const regExp3 = /[AB]+/g;
const regExp4 = /[A-Z]+/g;
const regExp5 = /[A-Za-z]+/g
const regExp6 = /[0-9]+/g
const regExp7 = /[\d]+/g
const regExp8 = /[\D]+/g
const regExp9 = /[\w]+/g
const regExp10 = /[\W]+/g
|는 or의 의미를 갖는다.
[ ]안에 문자는 or로 동작한다. 범위를 지정하려면 -를 사용한다.
\d
는 숫자를 의미하고 \D
는 문자를 의미한다.
\w
는 알파벳, 숫자, 언더스코의를 의미하고 \W
는 그것들을 제외한 문자를 의미한다.
const regExp = /[^0-9]+/g
const regExp = /[^A-Z]+/g
[ ]내의 ^는 not의 의미를 갖는다.
const regExp = /^https/
[ ]밖의 ^는 문자열의 시작을 의미한다.
const regExp = /com$/
$는 문자열의 마지막을 의미한다.
const regExp = /^\d+$/
const regExp = /^[\s]+/
const regExp = /^[A-Za-z0-9]{4,10}$/
알파벳 대소문자 또는 숫자로 시작하고 끝나고 4~10자리의 문자열과 매칭한다.
const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-z])*@[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/
const regExp = /^\d{3}-\d{3,4}-\d{4}$/
const regExp = /[^A-Za-z0-9]/gi