LHJ

I'm a FE developer.

17.9 자주 쓰는 문자셋

24 May 2020 » js_lj

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);