본문 바로가기
기술 개발/Javascript

정규표현식(Regex)

by 쪼짱 2023. 2. 8.
728x90
반응형
SMALL

정규 표현식(regular expression, regexp, regex, rational expression) 또는 정규식은

특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어다.

 

정규표현식 테스트 할 수 있는 사이트

https://regexr.com/

 

RegExr: Learn, Build, & Test RegEx

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

regexr.com

 

정규표현식의 구성

정규표현식 구성

  1. 정규표현식이라고 표현하는 슬래시(/)
  2. 찾아낼 패턴
  3. 찾을 때 옵션을 줄 수 있는 flag

 

Group and ranges

문법 의미 상세 설명
| 또는 패턴을 OR조건으로 연결시킴
( ) 그룹 패턴들의 그룹을 지음
[ ] 문자셋, 괄호안의 어떤 문자든 대괄호 안에 들어있는 모든 문자를 포함하는 문자열을 찾음
[^] 부정 문자셋, 괄호안의 어떤 문자가 아닐때 대괄호 안에 들어있는 모든 문자를 제외한 문자열를 찾음
(?:) 찾지만 기억하지는 않음 그룹을 지어서 찾지만 찾아진 문자열에 그룹 정보를 기록하지 않음
(?=) 해당 패턴을 만족하는 바로 앞의 패턴을 찾음
찾지만 기억하지는 않음
바로 앞에 명시된 패턴을 찾는데, (?=) 그룹 패턴을 만족하는 경우만 찾음

 

Quantifiers

문법 의미 상세 설명
? 없거나 있거나 물음표 앞의 패턴이 있든 없든 상관없이 찾음(optional을 의미함)
단, 있을 때는 1개 있는 경우만 찾음
* 없거나 1개 이상 별표 앞의 패턴이 있든 없든 상관없이 찾음(optional을 의미함)
물음표와는 다르게 있는 경우에 1개 이상있는 경우를 찾음
+ 1개 이상 플러스 앞의 패턴이 무조건 있는 경우를 찾음
1개 이상 있는 경우 모두 찾음
{n} n개 있는 앞의 패턴이 정확히 n개 있는 경우를 찾음
{min,} 최소 min개 있는 앞의 패턴이 최소 min개 있는 경우를 찾음
{min,max} 최소 min개 있고 최대 max개 있는 앞의 패턴이 최소 min개 있고 최대 max개인 경우를 찾음

 

Boundary-type

문법 의미 상세 설명
\b 단어 경계 찾는 패턴이 단어의 처음 또는 끝에 있는지 찾음
ex 1 ) /\bHello/g -> Hello가 단어 처음에 있는 것을 찾음
ex 2 ) /Hello\b/g -> Hello가 단어 끝에 있는 것을 찾음
\B 단어 경계가 아님 찾는 패턴이 단어의 처음이 아니거나 끝이 아닌 경우를 찾음
^ 문장의 시작 찾는 패턴이 문장의 처음에 있는 경우를 찾음
꺽쇠기호는 패턴 앞에 써주어야함.
$ 문장의 끝 찾는 패턴이 문장의 끝에 있는 경우를 찾음
달러기호는 패턴 뒤에 써주어야함.

 

Character classes

문법 의미 상세 설명
\ 특수문자를 일반문자로 인식 문법 키워드로 사용되는 특수문자를 일반 문자로 인식되도록 함
. 모든 문자 (줄바꿈 문자 제외) 줄바꿈 문자(\n)를 제외한 그 어떠한 문자를 모두 의미함
\d 숫자 숫자 1개를 의미함
\D 숫자 아님 숫자가 아닌 문자 1개를 의미함
\w 문자 문자(word) 1개를 의미함
\W 문자 아님 문자(word)가 아닌 1개를 의미함
\s 공백 공백 1개를 의미함
\S 공백 아님 공백이 아닌 문자 1개를 의미함

 

정규표현식 flag

  • g(global) : 매칭되는 다수의 결과값을 모두 검색한다.
  • i(case insensitive) : 대소문자 구분을 하지 않고 검색한다.
  • m(multiline) : 다중 행 모드(multiline mode)를 활성화한다. 패턴 문법 중에서 ^ 와 $에 영향을 준다. 다중 행 모드에서 ^ 와 $는 전체 문자열의 처음과 끝 뿐 아니라 각 행(각 줄)의 시작과 끝도 검색 범위에 포함된다.
  • s(single line) : 줄 바꿈 문자(개행문자, \n)도 문자로 포함 시켜서 검색한다. 그래서 .(점) 문법을 사용했을 때, 줄 바꿈 문자도 글자로 검색되도록 한다.
  • u(unicode) : 유니코드를 검색할 수 있게 한다.
  • y(sticky) : 문자열 내의 특정 위치를 검색할 수 있게 한다.

 

정규표현식 활용

1. 암호

  • 조건1. 6~20 영문 대소문자
  • 조건2. 최소 1개의 숫자 혹은 특수 문자를 포함해야 함
/^(?=.*[a-zA-Z])((?=.*\d)|(?=.*\W)).{6,20}$/

 

2. 전자우편 주소

/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/

 

3. URL

/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/

 

4. HTML 태그

/\<(/?[^\>]+)\>/

 

5. 전화 번호 (123-123-2344 or 123-1234-1234)

/(\d{3}).*(\d{3}).*(\d{4})/

 

6. 날짜 (2/10/2023 or 2/10/23)

/^\d{1,2}\/\d{1,2}\/\d{2,4}$/

 

7.  jpg, gif 또는 png 확장자를 가진 그림 파일명

/([^\s]+(?=\.(jpg|gif|png))\.\2)/

 

8. 1부터 50 사이의 번호(1과 50 포함)

/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/

 


참고

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

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

https://blog.walkinpcm.com/15

https://ko.javascript.info/regexp-introduction

https://hee-kkk.tistory.com/22

 

728x90
반응형
LIST

'기술 개발 > Javascript' 카테고리의 다른 글

this 가 동작하는 원리와 용법  (0) 2023.03.31
parameter와 argument의 차이  (0) 2023.03.28
얕은 복사 vs 깊은 복사  (1) 2023.01.12
호이스팅(Hoisting) (feat. var, let, const)  (0) 2023.01.05
async & await  (0) 2022.08.10