language/javascript

정규 표현식(regular expression)

월루이 2022. 6. 6.

 


1. 정규 표현식이란 ?

(=정규식)

 

프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다.

정규 표현식은 문자열을 대상으로 패턴 매칭 기능을 제공하여, 반복문과 조건문 없이 패턴을 가진 문자열을 간단하게 검색, 추출, 치환할 수 있다.

ex) 이메일, 패스워드 검사(유효성 검사)등의 복잡한 문자 일치 기능 등

 

하지만, 주석이나 공백을 허용하지 않고 여러가지 기호를 혼합하여 사용하기 때문에 가독성이 좋지 않다는 문제가 있다🥹

 

일반적으로 자주 사용되는 방법은 정규표현식 리터럴이며, 아래 그림과 같이 구성되어 있다.

 

https://poiemaweb.com/js-regexp

 

 

 

 


2. 플래그(flag)

플래그는 옵션이므로 선택적으로 사용한다.

하지만, 플래그를 사용하지 않은 경우 문자열 내 검색 매칭 대상이 1개 이상이더라도 첫번째 매칭한 대상만을 검색하고 종료한다.

g Global 문자열의 내의 모든 패턴 검색
i Ignore case 대소문자를 구별하지 않고 검색
m Multi-line 문자열의 행이 바뀌더라도 검색

 

 

 

 


3. 메타 문자

 

다른 언어에서 연산자나 예약어로 쓰이는 문자를 정규 표현식에서는 메타 문자라고 부른다.

 

메타문자

문자열의 시작과 끝을 알려주는 메타 문자

^ 문자열 또는 줄의 시작을 지정 ^0 : 0으로 시작하는 단어
$ 문자열 또는 줄의 시작을 지정 0$ : 0으로 끝나는 단어
\b 문자와 공백사이의 문자와 일치  
\B 문자와 공백사이가 아닌 문자와 일치  

일치 메타 문자

. 모든 아무 문자 하나와 일치  
| 왼쪽과 오른쪽 패턴 중에 아무패턴이나 일치 여러개가 연결되면 그 중에서 단 하나의 패턴만 일치

문자 클래스

[] 그 내부에 해당하는 문자열의 범위 중 한 문자만 선택한다는 의미 문자클래스 내부에서는 Meta문자를 사용할 수 없거나 의미가 다르게 사용된다.
[xy] x, y 중에 하나만 선택  
[^xy] x,y를 제외하고 문자 하나를 찾음 문자 클래스([]) 내의 ^는 not을 의미
\d 모든 숫자(아라비아 숫자)와 일치  
\D 숫자(아라비아 숫자)가 아닌 모든 문자와 일치  
\w 단어 영문자+숫자+_(밑줄) [0-9a-zA-Z_]

수량자

* 패턴이 일치하지 않거나 한번 이상 반복할 때 일치 {n,} : n번 이상 반복할 때 일치
{0.}과 같음
+ 패턴이 한번 이상 반복할 때 일치 {1,}과 같음
? 패턴이 일치하지 않거나 한번만 반복할 때 일치 {n,m} : n번에서 m번 안으로 반복할 때 일치
{0,1}

 

 

 

 


4. 기본적인 정규식

 

  • ^[0-9]*$: 숫자
  • ^[a-zA-Z]*$: 영문자. 패턴변경자를 써서 /^[a-z]*$/i 같이 쓸 수 있다.
  • ^[가-힣]*$: 현대 한글(유니코드를 지원하는 정규식 엔진에 한정)
  • ^[ㄱ-ㅎㅏ-ㅣ가-힣]*$: 한글 자모 낱자를 포함한 모든 현대 한글
  • ^[a-zA-Z0-9]*$: 영문/숫자

 

 

 

 

 


5. 학습 관련 사이트

 

1)

regexone

 

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac

regexone.com

step-by-step 방식으로 빠르게 배울 수 있는 사이트.

 

 

2)

regex101

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET.

regex101.com

간편하게 정규식을 연습하고 디버깅할 수 있는 사이트. 여러 색상으로 그룹을 표시해주기 때문에 구분이 원활하다.
PCRE, 자바스크립트, 파이썬, Go를 지원한다.

 

 

3)

정규식을 시각화해주는 사이트들.

작성한 정규식을 선로도(Railroad Diagram)로 변환하여 보여준다. 

 

regexper

 

Regexper

 

regexper.com

정규식을 그림 파일로 다운로드하는 기능을 제공

 

 

debuggex

 

Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.

View Cheatsheet Visual ModeText Mode {{nfaModel.error.msg}}   Result: Matches Does not match starting at the black triangle slider

www.debuggex.com

실시간 정규식 시각화 및 매치 테스트를 제공

 

 

 

 


출처

 

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

 

정규 표현식 - JavaScript | MDN

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchA

developer.mozilla.org

 

 

https://poiemaweb.com/js-regexp

 

RegExp | PoiemaWeb

정규표현식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용한다. 예를 들어 회원가입 화면에서 사용자로 부터 입력 받는 전화번호가 유효한지 체크할 필요가 있다.

poiemaweb.com

 

댓글