17.9 자주 쓰는 문자셋
매우 자주 쓰이는 일부 문자셋은 단축 표기가 따로 있습니다.
이들을 클래스라고 부르기도 합니다.
문자셋 | 동등한 표현 | 노트 |
---|---|---|
\d | [0-9] | |
\D | [^0-9] | |
\s | [ \t\v\n\r] | 탭, 스페이스, 세로 탭, 줄바꿈이 포함됩니다. |
\S | [^ \t\v\n\r] | |
\w | [a-zA-Z_] | 하이픈과 마침표는 포함되지 않으므로 이 문자셋으로 도메인 이름이나 CSS 클래스 등을 찾을 수는 없습니다. |
\W | [^a-zA-Z_] |
위 단축 표기 중에서 가장 널리 쓰이는 것은 아마 공백문자셋 \s
일 겁니다.
공백을 써서 줄을 맞출 때가 많습니다.
이런 파일을 프로그램으로 분석하려면 스페이스 몇 칸이 들어갔든 관계없이 필요한 내용을 찾을 수 있어야 합니다.
const stuff =
'hight: 9\n' +
'medium: 5\n' +
'low: 2\n';
const levels = stuff.match(/:\s*[0-9]/g);
이때 \s
뒤에 있는 *
는 ‘숫자는 상관없으며 없어도 된다’는 의미입니다.
역시 곧 배웁니다.
문자 제외 클래스, 즉 \D
, \S
, \W
의 가능성을 과소평가하지 마십시오.
이들 클래스를 사용하면 원치 않는 문자들을 빠르고 효율적으로 제거할 수 있습니다.
예를 들어 전화번호를 데이터베이스에 저장하기 전에 형식을 통일하는 편이 좋습니다.
사람들이 전화번호를 쓰는 형식은 전혀 통일되어 있지 않습니다.
하이픈을 쓰는 사람이 가장 많지만, 그밖에도 마침표, 괄호, 공백, 샵 등 온갖 기호를 사용합니다.
전화번호를 검색하거나 저장하는 목적이라면 10자리 숫자로 통일되어 있는 편이 가장 좋을 겁니다.
\D
를 쓰면 아주 쉽습니다.
const messyPhone = '(505) 555-1515';
const neatPhone = messyPhone.replace(/\D/g, '');
비슷한 예로, 필자는 required
필드(공백이 아닌 글자가 최소한 하나는 있어야 하는 필드)에 데이터가 있는지 검사할 때 종종 \S
를 쓰곤 합니다.
const field = ' something ';
const valid = /\S/.test(field);