본문 바로가기
Front-End/JavaScript

Regex

by kk님 2023. 3. 6.

헷갈리는 부분들 정리

특히나 헷갈린 점. 대괄호, 중괄호, 소괄호의 의미. 백슬래시를 왜 쓴걸까? 이메일의 경우 @또는 .이 들어가는데, 이것은 어떻게 표현하지? 딱 그 문자만 들어가는 경우? 종료할때는?

1. 괄호: [], () 그리고 {}

(1) 대괄호: 그중에 하나만. [a-z]: a부터 z까지의 알파벳중 하나. [abc] 는 [a-c]와 같다.

(내가 착각한 것: 하나가 아니라 다중 가능이라고 생각함)

(2) 소괄호: 그룹

(3) 중괄호: 반복 횟수. 예: a{2}: a가 2번 반복

(내가 착각한 것: ab{2} ab 두자리로 끝난다고 생각함)

 

2. 특수문자 ^, *, +, ?, $, .

(1) ^: 2가지 경우가 있음. 대괄호를 같이 쓰면 의미가 달라짐

  첫번째: ^a : a로 시작됨. ^[a-z]: abc...lmn.. wxyz 모든 소문자 알파벳 중에서 하나로 "시작"
  두번째: [^a]: a를 포함하지 않는다. [^ab]: a와 b를 제외한 문자

(2) a*: 반복. 해당 문자가 0번 이상 반복됨

(3) a+: 반복. 해당 문자가 1번 이상 반복됨

(4) a?: 있을수도 있고 없을 수도 있다.

(5) a$: a로 끝남

(6) .a: a로 끝나고 한자릿수  .. $랑 차이가 뭘까

3. 백슬래시

(1) \^ : ^를 문자로 사용함

(2) \d: 숫자를 의미함

(3) \D: 숫자가 아닌 것 의미

(4) \s: 공백

(5) \S: 공백이 아닌 것 의미

(6) \w: word. 알파벳, 숫자, _ 중의 한 문자

(7) \W: word 아님. 알파벳, 숫자, _ 가 아닌 문자

(8) \. : .을 문자로 사용함. (예: [-_\.]? : - 또는 _ 또는 . 이 있을 수도 있음)

 

4. Flag:  /문자열/[Flag문자]

(1) g : 문자열 내 모든 패턴들을 검색. (?? 한번검색으로 끝나지 않는다는 의미인가?)

(2) i : Ignore case. 대소문자를 식별하지 않는다.

(3) m : multi line. 다중 라인인 경우에도 검색

 Flag 예: /[abc]/g :abc 중에서 하나 찾음

 

HAMA 블로그: 정규표현식 (Regex) 정리

내용들을 재밌게 점검해볼 수 있도록 정리하신 내용이 나와있다. 내가 잘 알고있는게 맞는지 확인해볼 수 있다.

 

https://ihateregex.io/

정규표현식을 적용했을 때 결과를 확인할 수 있다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Backreferences

 

(*다시 되돌아와서*)

특히나 헷갈린 점을 짚어보자.

대괄호, 중괄호, 소괄호의 의미: 대괄호: 그 중에 하나. 중괄호: 몇 번 반복. 소괄호: 그룹

백슬래시를 왜 쓴걸까? : 특정 문자를 사용할 것 입니다.는 의미. 특수문자의 경우 특수한 표현이 들어간 문자가 있기 때문에 글자 그대로를 표현하려면 백슬래시를 사용한다.

이메일의 경우 @또는 .이 들어가는데, 이것은 어떻게 표현하지?: 그냥 중간에 @와 \.을 넣어주면 된다.

딱 그 문자만 들어가는 경우? 위와 동일

종료할때는? 예를들어 com으로 끝나고 싶은 경우에 (com)$ 으로 표현하면 된다. com$으로 해도 되는 것 같다.

 

다음은 만들어본 이메일에 관한 정규식

^[a-zA-Z0-9\_]+@[a-zA-Z0-9\_]+\.com$