정규표현식 - 순한맛

조 은길·2022년 5월 29일
0
post-thumbnail

문자 검사를 하는 쉬운 방법

- includes();

'abc'.includes('a'); => true

'abc' => 검사 대상

('a') => 검사 대상에 해당 문자가 포함 되어 있는가??
=> 'ab' 등 글자 갯수에 제약은 없다.

includes();의 한계는 검사 대상에 한글이 포함되있는지 혹은 영어가 포함되어있는지 같은 복잡한 작업은 할 수없다는 것이다.

또한, " 왼쪽의 글자가 A로 끝나는가? " 혹은 " 숫자가 적어도 1회 출현하는가? " => 이런 거 못한다.

그래서, 이런 복잡한 작업을 하기 위해서, 출현한 문법이 바로 "정규식"이다.


정규식

그냥 " 문자를 검사할 수있는 식 "이다.

/a/ => 이렇게 슬레시(/) 2개 안에다가 문자를 집어넣으면, 이게 " 정규식 "이다.

a => a가 있는지 검사할 문자

ex)

/a/.test('abcde') => true

('abcde') => 검사당할 문자 ( 체크하고 싶은 문자열 )

즉, a가 위의 문자열 안에 들어있는지 알고 싶은 거다.


정규식의 장점

정규식으로 문자의 검사 범위를 지정할 수 있다

ex)

/[a-z]/.test('abcde') => true

/[a-z]/ => a-z 중 아무 글자 1개


  • 대문자는??

/[A-Z]/.test('abcde') => false

/[A-Z]/.test('abcdeA') => true

이것을 좀 더 응용해보면,

/[a-zA-Z]/.test('abcdeA') => true

/[a-zA-Z]/ => 아무 알파벳 1개


  • 한글을 검사하고 싶다면

/[ㄱ-ㅎㅏ-ㅣ가-힣]/.test('ㅋㅋㅋ') => true


  • 숫자를 검사하고 싶다면

/[0-9]/.test('ㅋㅋㅋㅋㅋ') => false

사실, 구글 쳐보면 케이스 별로 잘 나와서, 그때그때 찾아서 쓰면 된다.


/ (슬레시) 쓰는 게 귀찮다면, 축약어를 써보자

/\S/.test('ㅋㅋㅋ') => true

\S => 아무 문자 1개라는 뜻
=> 얘는 특수 기호까지도 포함하기 때문에, 그 점을 유의하자!!

/^a/.test('ㅋㅋㅋ') => false

^a => a라는 문자로 시작하는가를 체크한다

/a$/.test('sda') => true

a$ => a라는 문자로 끝나는가를 체크한다


or 기호에 대해서 알아보자

=> or 기호는 |

/a|b/.test('aaa') => true

a|b => a 또는 b가 문자열에 존재하는지를 체크

물론, & 기호도 사용가능!!

참고로,

/(a|b)/.test('bbb') => true

(a|b) => 괄호 역시 편의상 가져다 쓸 수있다.
=> 괄호 안에 있는 것부터 연산을 우선적으로 한다.


정규식으로 이메일 형식 검사는?

.은 특별한 정규식 문법

=> .\(백 슬레시)를 쳐야한다.

/\S@\S\.\S/.test('aaa@bbb.ccc') => false

\S => 아무 문자 1개를 뜻함

\S@ => 딱 한 글자 다음에 @가 오는지를 체크한다.
즉, ('a@b.c') => 이렇게 전부 한 글자여야 true로 통과 시킨다.

+는 왼쪽 문자 반복 검색

/\S+@\S+\.\S+/.test('aaa@bbb.ccc') => true

\S+@ => 문자열 끝에 @가 있는지 체크

\S+\. => 문자열 끝에 .이 있는지 체크


구글에 regex test를 검색해보면, 정규식을 test 해볼 수 있는 여러 싸이트가 나온다.


이메일 형식을 검사해보자

/\S+@\S+.\S+/
=> 대충 만든 표현식임. @@.. 등은 필터하지 못한다.
=> 좀 더 엄격한 정규식은 구글 찾아보면, 많이 나온다.
=> 근데, 요즘은 어차피 이메일 인증하면, 굳이 정규식이 엄격할 필요는 없다.


정규표현식은 JS언어인가??

일단, Node.js에서 실행되는 걸 보니 Web API는 아니다.

자바스크립트라는 언어 안에 있는 아주 작은 기능이 있는데, 그 기능이 정규식 표현을 필요로 하고 사용하기 위해 정규식표현을 사용하는 것이다.

이 정규식 표현은 자바스크립트에서만 사용하는 것이 아니라 JAVA, Python 등 다른 프로그래밍언어에서도 사용하고 언어 별로 문법도 다르다.

그렇기 때문에 자신이 사용하는 프로그래밍 언어에서 정해져있는 정규식표현을 공부할 필요가 있다.

프로그래밍에 있어서, 특히 자바스크립트로 웹개발을 하는 엔지니어라면 데이터를 다루는 일이 많기 때문에 반드시 알아 두는 것이 좋다.


정규표현식은 응용도가 높고, 필자가 역시 사용에 미숙하기 때문에 다음 시간에는 좀 더 확실하게 정규표현식에 대해 공부하고 정리해보도록 해야겠다.

profile
좋은 길로만 가는 "조은길"입니다😁

0개의 댓글