Superbly Life & Development

정규표현식

2019-09-21

정규표현식 (Regular Expression)

  • 정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.
  • 정규표현식은 특정한 조건으로 문자를 검색하거나 바꿀 때 사용한다.

( ) 패턴들을 하나의 그룹으로 묶음.
ex ) OR 연산자인 | 과 함께 써서, (txt|hwp|doc)과 같이 txt, hwp, doc 세가지에 매치시킬 수 있다.
+ 기호 앞의 패턴이 1번 이상 발생하는 패턴
ex ) ^\S+ (공백없는 텍스트로 시작하고, 한글자 이상의 길이로 된다.)
? 기호 앞의 패턴이 없거나 1번 발생하는 패턴 (0 ~ 1번 발생)
ex ) \d+ (숫자가 없거나 1번 발생하는 패턴)
* 기호 앞의 패턴이 없거나 1번 이상 발생하는 패턴
(0 ~ 1번 이상 발생, ?과 *를 구분해야 한다.)
. 모든 문자를 카르킴 (\과 개행은 제외)
^ 문자열(패턴)이나 행의 처음을 의미
$ 문자열(패턴)이나 행의 종료를 알립니다.
[ ] [ ] 사이에 들어간 문자중 하나를 매치
ex ) [abc]는 ab,bc,ac,를 모두 포함
[^ ] [ ]의 부정을 의미.
[^0-9] 라면, 0에서 9를 포함하지 않은 문자를 의미
[A-Z] A에서 Z까지의 대문자 중 하나를 찾습니다.
[0-9]는 0부터 9까지를 의미.
\s 공백문자
\S 공백을 제외한 나머지 문자들
(공백이 없는 텍스트 일때 사용하게 된다.)
\w “_“를 포함한, 영어와 숫자들
\W “_“를 제외한, 영어와 숫자가 아닌 문자열들과 일치.
\d 숫자를 일치 시킨다. [0-9]와 동일
\D 숫자가 아닌 모든 문자
{M,N} 최소 M번 이상, 최대 N번 이하로 발생하는 패턴
참고로, {}는 정확하게 몇번 발생하는지를 말합니다.
ex ) \d{6} - [1-4]\d{6} (주민등록 번호의 경우 6자리 숫자와 대쉬(-), 그리고 1 ~ 4의 숫자 + 6자리 숫자로 구성된다.)
| OR 연산을 의미 (txt|doc)는 txt 또는 doc를 의미한다.
?! 대소문자를 구분하지 않음

추가적으로 자주 사용하게 되는 모든 숫자, 영문자는 아래와 같이 표현할 수 있다.

  • [a-zA-Z] : 모든 영문자, a-z는 소문자 의미, A-Z는 대문자 의미
  • [0-9] : 0-9까지의 모든 숫자
  • [a-zA-Z0-9] : 대문자 및 소문자의 영문자와 숫자

정규표현식 응용 사례

숫자만 나오도록 할 경우

텍스트는 제거하고 숫자만 나오도록 할 경우 replaceAll이라는 메소드와 정규 표현식을 사용 할 수 있다.

string.replaceAll(“[^0-9]”,””);

trace

실행 결과
trace

이메일 형식 체크

regex = “[0-9a-zA-Z][_0-9a-zA-Z-]*@[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-] + ){1,2}$”;

trace
실행 결과
trace

해당 확장차 파일 찾기

trace

실행 결과
trace


참고


이전 Jquery

Comments

Content