STUDY_NOTE/javascript & jQuery

[JavaScript]자주 쓰이는 정규 표현식 (regular expression)

kh201 2020. 12. 28. 10:56

* 정규 표현식

(regular expression / regexp / regex / rational expression)

 

 

 

 

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

특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다. 문자열의 유한 집합을 지정하는 단순한 방법은 문자열의 요소나 멤버를 나열하는 것이다. (참조 : 위키백과, 우리 모두의 백과사전)

 

메타문자 : 정규 표현식에서 사용되는 기호들

 

주로 어떤 규칙성을 가지는 문자열에 대한 검증이 필요할때 사용한다. 

사용한 예

 

 

 표현식

의미 

 ^x

x 문자로 시작되는 문자열 표현

x$

x 문자로 종료되는 문자열 표현

 .x

 임의의 한 문자의 자리수를 표현하며 x 로 끝나는 문자열 표현 

 x+

 반복을 표현하며 x 문자가 한번 이상 반복됨

 x?

 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음

 x*

 반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨

 x | y

 or 를 표현하며 x 또는 y 문자가 존재함

( x )

x 를 그룹으로 처리함을 의미

 (x)(y)

그룹들의 집합
앞에서 부터 순서대로 번호를 부여하여 관리
x, y 는 각 그룹의 데이터로 관리된다.

 (x)(?:y)

그룹들의 집합에 대한 예외를 표현
y 는 그룹의 데이터로 관리되지 않음

 x{n}

x 문자가 n번 반복됨

 x{n,}

x 문자가 n번 이상 반복됨

 x{n,m}

x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨

 

'[]' 는 내부에 지정된 문자열의 범위 중에서 한 문자만을 선택하다는 특수한 의미를 가진다. 

그 안에서 메타문자를 사용하면 다른 의미를 가지고 동작할 수도 있다.

       (ex. ^x는 x로 시작하는 문자열로 표현되지만 [^x]는 x를 제외한 문자를 표현)

 

 표현식

의미 

[xy]

문자 x 와 y 중에 하나 선택

 [^xy]

not 을 표현하며  x 및 y 를 제외한 문자를 의미

 [x-z]

범위를 표현하며 x ~ z 사이의 문자를 의미

 \^

escape 를 표현하며 ^ 를 문자로 사용함을 의미

 \b

word boundary를 표현하며 문자와 공백사이의 문자를 의미

 \B

non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미

 \d

digit 를 표현하며 숫자를 의미

 \D

non digit 를 표현하며 숫자가 아닌 것을 의미

 \s

space 를 표현하며 공백 문자를 의미

 \S

non space를 표현하며 공백 문자가 아닌 것을 의미

 \t

tab 을 표현하며 탭 문자를 의미

 \v

vertical tab을 표현하며 수직 탭(?) 문자를 의미

 \w

word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미

 \W

non word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미

\뒤 대문자가 주로 ~가 아닌 문자를 의미하는듯 

 

Flag

정규표현식 사용할때 flag라는게 있는데 flag를 사용하지 않으면 문자열에 대해서 한 번만 처리하고 종료하게 된다고 한다. 

Flag

의미 

 g

Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미

 i

Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미

 m

Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미

 

사용예

검사 구분

사용예

 한글

/[ㄱ-|-|-힣]/

 숫자

/[0-9]/g

 이메일

/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i

모든 공백

/\s/g

전화번호

 /^\d{3}-\d{3,4}-\d{4}$/

핸드폰번호

/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/

URL

^(https?):\/\/([^:\/\s]+)(:([^\/]*))?((\/[^\s/\/]+)*)?\/?([^#\s\?]*)(\?([^#\s]*))?(#(\w*))?$

 

 

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

참고 : ccambo.blogspot.com/2014/10/regular-expression.html