정규표현식 요약정리(로그인기능에 쓸거)

HR.lee·2022년 1월 9일
0

사전

목록 보기
4/5

정규 표현식

1) 정규 표현식 객체

  • 자바스크립트의 기본 내장 객체 중 하나

  • 생성 방법

var regExp1 = new RegExp('text');

var regExp2 = /text/;

  • 정규 표현식 객체의 메소드

test() : 정규 표현식과 일치하는 문자열 존재 여부 반환

exec() : 정규 표현식과 일치하는 문자열 반환

2) 정규 표현식을 사용하는 String 객체의 메소드

match(regExp): 정규 표현식과 일치하는 부분 반환

replace(regExp, replacement): 정규 표현식과 일치하는 부분 변경

search(regExp): 정규 표현식과 일치하는 부분의 위치 반환

split(regExp): 정규 표현식을 기준으로 문자열을 잘라 배열 반환

3) 대체 문자

  • replace() 메소드 사용

  • 대체 문자 정규 표현식 기호

$& : 일치하는 문자열

$` : 일치하는 부분의 앞부분 문자열

$' : 일치하는 부분의 뒷부분 문자열

$1, $2, $3 : 그룹

  • 사용 예시

'a'.replace(/a/, '+$&+'); // a -> +a+ 변환

'abcde'.replace(/(a)(b)(c)/, '+$1=$2=$3+'); // abcde -> +a=b=c+de

4) 플래그 문자

  • 비교 범위 지정

g : 전역 비교

i : 대소문자 상관없이 비교

m : 여러 줄의 검사를 수행 // 앵커 문자 사용

  • 생성 예시

var regExp = /Expression/im;

var regExp = new regExp('Expression', 'im');

5) 앵커 문자

  • 문자열의 앞과 뒤를 구분해주는 정규 표현식 기호

^abc : 맨 앞 문자가 abc

abc$ : 맨 뒤 문자가 abc

  • 줄바꿈이 존재하는 문자열 비교시 m 플래그 문자가 지정되어있으면 각 줄당 앵커를 확인

  • 예시

'Javascript\njQuery\nAjax'.replace(/^j/igm, '+$&+');

예시 결과

"+J+avascript

+j+Query

Ajax"

6) 메타 문자

  • 비교 범위를 표현

. : 모든 글자

[abc] : 괄호 안의 글자

[^abc] : 괄호 안의 글자 제외

[a-z] : 알파벳 a부터 z까지

[A-Z] : 알파벳 A부터 Z까지

[0-9] : 숫자 0부터 9까지

\d : 숫자

\w : 아무 단어(숫자 포함)

\s : 공백 문자(탭, 띄어쓰기, 개행)

\D : 숫자 아님

\W : 아무 단어 아님

\S : 공백 문자 아님

  • 예시

'Javascript jQuery Ajax'.replace(/[aj]/igm, '+$&'); -> "+J+av+ascript +jQuery +A+j+ax"

'910209-2001211'.replace(/\d\d\d\d\d\d-[1234]\d\d\d\d\d\d/, '+$&+'); -> "+910209-2001211+"

'910209-2001211999'.replace(/\d\d\d\d\d\d-[1234]\d\d\d\d\d\d/, '+$&+'); -> "+910209-2001211+999"

7) 수량 문자

a+ : a가 적어도 1개 이상

a* : a가 0개 또는 여러 개

a? : a가 0개 또는 1개

a{5} : a가 5개

a{2,5} : a가 2~5개

a{2,} : a가 2개 이상

a{,2} : a가 2개 이하

8) 선택 문자

  • (abc|def) : abc 또는 def 선택 // or

9) 정규 표현식 사용 예시(커스텀 만드는거보다 찾는게 쉽긴함)

  • 소문자, 숫자 한정

var regExp = /([0-9]|[a-z])/g;

'java'.replace(regExp, '').length -> 0

'Java'.replace(regExp, '').length -> 1

  • 한글 한정

var regExp = /([가-힣])/g;

'자바'.replace(regExp, '').length -> 0

'Java'.replace(regExp, '').length -> 4

  • 이메일 패턴 한정

var regExp = /\w+@\w+.\w+/;

'java@java.com'.replace(regExp, '').length -> 0

'자바'.replace(regExp, '').length -> 2

profile
It's an adventure time!

0개의 댓글