개발/Javascript

자바스크립트 정규식(RegExp) 사용하기

duknock 2022. 9. 21. 18:32
반응형

 

정규식 혹은 정규 표현식 (Regular Expression)특정한 규칙을 가진 문자열을 표현하는 데 사용하는 형식 언어이다.

 

자바스크립트에서만 사용하는 것은 아니고 수많은 프로그래밍 언어, 심지어 텍스트 편집기 등에서도 널리 사용하는 기능이다.

 

참고로 자바스크립트에서 정규식은 문자열이 아니라 객체다.

 

문자열을 따옴표(")로 감싸는것 처럼, 정규식은 슬래시(/)로 표현한다.

 

어떻게 생겨먹은건지 대충 보여주자면

 

/[a-z]/g

뭔가 엑셀 함수식 처럼 생겼다

이렇게 쓰면

123abc가나다ABC@#$

이렇게 a 부터 z 까지의 문자에 속하는 놈들이 선택된다. (대문자는 선택이 안됨. 따로 조건 하나 더 설정해줘야됨.)

 

 

정규식을 사용하면 문자열에서 원하는 글자를 추출할때나 유효성 검사등을 할때 아주아주 유용하게 써먹을 수 있으므로,

알아두면 도움이 된다.

 

다만 익숙해지기가 좀....많이....거지같다. 일단 정규식 생겨먹은거 부터 여러 기호들이 많이 들어가서 골아프게 생겼는데,

 

직접 써보면 더 골아프다. 그래서 난 그냥 정규식 만들어주는 사이트 자주 쓴다. 아래에 추천해줄테니 참고.

 

일단 정규식에 대해서 한번 알아보기나 하자.

 

 


 

어디에 갖다 쓰죠?

 

 

정규식은 특정 문자 혹은 조합을 찾기 위한 패턴이므로, String에 붙어있는 메서드와 같이 사용 가능하다.

 

split(), replace(), search(), match() 메서드에 같이 사용하면 된다.

 

 

예시

let str = 'abcd';
str.replace(/a/, ''); // 'bcd';

 


 

어떻게 써요?

 

 

일단 정규식은 슬래시(/)로 패턴을 감싸고 슬래시 뒤에 플래그를 붙여서 표현한다.

 

/패턴/플래그

 

플래그는 옵션같은거다. 문자열에서 패턴에 해당하는 문자 전체를 찾을지, 첫번째거만 찾을지 뭐 그런거 설정해주는거라 생각하면 된다.

 

/abc/ ("abc" 와 정확히 일치하는 것들 중 첫번째 것)
ABC abc ab c a b c Abc

이렇게 간단하게 표현할 수 도 있고

 

/([a-zA-Z]){3}/g  (알파벳 소문자, 대문자 전체 중에 3글자인것들 모두 선택)
Hello! This is RegExp!

이렇게 특수문자로 조건을 추가하여 복잡하게 표현할 수 도 있다.

 

 


패턴과 플래그

 

이게 진짜 머리 아프다. 워낙 종류도 많고....

 

자주 쓰는 패턴과 플래그를 표로 정리해 놓았으니 참고하면 된다.

 

패턴 의미 정규식 예시
a-z 영어 소문자 a부터 z까지 ("-"로 범위 지정) /[a-z]/
A-Z 영어 대문자 A부터 Z까지 /[A-Z]/
a-zA-Z 영어 /[a-zA-Z]/
ㄱ-힣 한글 /[ㄱ-힣]/
0-9 숫자 /[0-9]/
. 줄바꿈을 제외한 모든 문자 /./
\d 숫자 /\d/
\D 숫자가 아닌것 /\D/
\w 영어, 숫자, 언더스코어(_) /\w/
\W 영어, 숫자, 언더스코어(_)를 제외한 모든 문자 /\W/
\s 공백 /\s/
\S 공백을 제외한 모든 문자 /\S/
\특수기호 특수기호는 백슬래시로 이스케이프 처리해야 문자그대로 쓸 수 있다. /\$/
플래그 의미 정규식 예시
g 패턴에 해당하는 것 전체 (global) /[a-z]/g
i 대소문자 구분 안함 (case insensitive) /abc/i
m 여러 행의 문자열에 대해 검색 (multi line) /[a-d]/m

참고로 플래그는 여러개를 동시에 사용할 수 있다. (예시 : /[a-z]/gi , /[a-z]/gm 등...)

 

 

이외에도 많은 패턴과 플래그들이 있는데 그건 여기 참고....

 


 

참고하기 좋은 사이트

 

1. RegExr

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

정규식 테스트를 할 수 있는 사이트, 다른 사람들이 등록한 정규식도 참고할 수 있다.

 

개인적으로 제일 깔끔해서 좋음.

 

 

 

2. I hate Regex

https://ihateregex.io/

 

Regex cheatsheet - I Hate Regex

 

ihateregex.io

특정 상황에서 쓸 수 있는 정규식을 알려주는 사이트. 주로 유효성 검사할때 쓰기 좋다.

 

설명은 없고 정규식만 딱 던져줌. 개쿨함;;

 

 


 

 

정규식은 기초적인 것만 알아두고 나머지는 웹에서 검색해서 복붙으로 갖다 쓰자!

 

그게 정신건강에 편하다!

반응형