반복
반복repetition 메타 문자혹은 수량자 는 얼마나 많이 일치해야 하는지 지정할 때 씁니다. 앞에서 우리는 숫자 한 개를 찾는 예제를 봤었습니다. 그런데 숫자 여러 개를 찾아야 한다면 어떨까요? 이미 알고 있는 방법을 사용해서 다음과 같이 찾을 수 있습니다.
const match = beer99.match(/[0-9][0-9][0-9][0-9][0-9][0-9]/);
이번에도, 두 자리 숫자가 숫자를 소비해서 세 자리 숫자를 찾지 못하는 일이 없도록 세 자리 숫자를 먼저 썼습니다. 이 정규식은 한 자리, 두 자리, 세 자리 숫자에는 잘 동작하지만 네 자리 숫자가 필요하다면 정규식을 또 고쳐야 합니다. 다행히 더 나은 방법이 있습니다.
const match = beer99.match(/[0-9]+/);
문자셋 다음의 +는 그 앞에 있는 요소가 하나 이상 있어야 한다는 뜻입니다. 반복 메타 문자는 그 자체로는 아무 의미도 없습니다. 반복 메타 문자에는 다섯 가지 종류가 있습니다.
| 반복 메타 문자 | 설명 | 예제 |
|---|---|---|
| {n} | 정확히 n개 | /\d{5}/는 새 우편번호처럼 정확히 다섯 자리 숫자에만 일치합니다. |
| {n,} | 최소한 n개 | /\d{5, }/는 다섯 자리 이상의 숫자에만 일치합니다. |
| {n, m} | n개 이상, m개 이하 | /\d{2, 5}/는 2개, 3개, 4개, 5개에 일치합니다. |
| ? | 0개 또는 1개. {0, 1}와 동등 | /[a-z]\d?/i는 글자가 있고 그 다음에 숫자가 없거나 한 개 있는 경우에 일치합니다. |
| * | 숫자는 상관없으며 없어도 됩니다(클레이니Klene 스타, 클레이니 클로저라고 부르기도 합니다.) | /[a-z]\d*/i는 글자가 있고 그 다음에 숫자가 없거나 있는 상황에 일치합니다. |
| + | 하나 이상 | /[a-z]\d+/i는 글자가 있고 그 다음에 숫자가 한 개 이상 있는 경우에 일치합니다. |