Web/JavaScript

정규표현식

gorae_lulu 2022. 12. 30. 16:55

정규표현식(regular expression)이란

정규표현식이란 문자열에서 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 검색 패턴

 

정규 표현식의 생성

1. 정규 표현식 리터럴을 이용한 생성

2. RegExp 객체를 이용한 생성

문법
/pattern/modifiers

정규 표현식 리터럴은 슬래시(/) 기호로 시작하여, 슬래시(/) 기호로 끝납니다.

또한, 필요에 따라 플래그를 추가하여 기본 검색 설정을 변경할 수도 있습니다.

 

 

정규표현식 패턴

 

modifiers

정규 표현식을 생성할 때 modifiers를 사용하여 기본 검색 설정을 변경할 수 있다. 이렇게 설정된 modifiers는 나중에 추가되거나 삭제될 수 없다.

modifiers 설명
i 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정함.
g 검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정.
m 검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정.
y 대상 문자열의 현재 위치부터 비교를 시작하도록 설정함.

 

 

특수 문자(special characters)

정규 표현식을 사용하여 단순한 패턴을 검색하고자 할 때는 찾고자 하는 문자열을 직접 나열하면 된다. 하지만 숫자만을 검색하거나, 띄어쓰기를 찾는 등 정확히 일치하는 패턴보다 더 복잡한 조건을 사용하려면 특수 문자를 사용해야 한다.

 

특수 문자 설명
\ 역슬래시\ 다음에 일반 문자가 나오면 이스케이프문자로 해석하고, 특수 문자가 나오면 일반문자로 해석
\d 숫자를 검색함. /[0-9]/와 같음
\D 숫자가 아닌 문자를 검색함. /[^0-9]와 같음
\w 언더스코어()를 포함한 영문자 및 숫자를 검색./[A-Za-z0-9]/와 같음
\W 언더스코어(), 영문자, 숫자가 아닌 문자를 검색함./[^A-Za-z0-9]/와 같음
\s 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자를 검색함
\S 띄어쓰기, 탭, 줄 바꿈 문자 등으 공백 문자가 아닌 문자를 검색함
\xhh 16진수 hh에 해당하는 유니코드 문자를 검색함
\uhhhh 16진수 hhhh에 해당하는 유니코드 문자를 검색함

 

 

quantifier

정규 표현식에서는 특수 문자로 수량을 나타내는 다양한 quantifier를 사용할 수 있습니다.

quantifier 설명
n* 바로 앞의 문자가 0번 이상 나타나는 경우를 검색함./{0,}/와 같음
 n+ 바로 앞의 문자가 1번 이상 나타나는 경우를 검색함./{1,}/와 같음
n? 바로 앞의 문자가 0번 또는 1번만 나타나는 경우를 검색함./{0,1}/와 같음

 

 

 

괄호(bracket)

정규 표현식에서 사용할 수 있는 여러 가지 괄호의 의미는 다음과 같다.

bracket 설명
a(b)c 전체 패턴을 검색한 후에 괄호 안에 명시된 문자열을 저장.("abc"를 검색한 후 b저장)
[abc] 꺾쇠 괄호([])안에 명시된 문자를 검색("abc"검색)
[0-3] 꺾쇠 괄호([])안에 명시된 숫자를 검색(0부터 3까지의 숫자 검색)
[\b] 백스페이스 문자를 검색함
{n} 앞의 문자가 정확히 n번 나타나는 경우를 검색. n은 반드시 양의 정수이어야함
{m,n} 앞의 문자가 최소 m번 이상 최대 n번 이하로 나타나는 경우 검색. m과 n은 반드시 양의 정수이어야함

 

 

위치 문자

정규 표현식에서는 패턴을 검색할 단어의 위치를 지정할 수 있다.

위치 문자 설명
^a 단어의 맨 앞(시작점)에 위치한 해당 패턴만을 검색('a'로 시작하는 단어의 'a'만을 검색함)
a$ 단어의 맨 뒤(종착점)에 위치한 해당 패턴만을 검색('a'로 끝나는 단어의 'a'만을 검색)

 

 

상용 정규표현식

특수문자 체크 정규식
const regExp = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/g;

모든 공백 체크 정규식
const regExp = /\s/g;

숫자만 체크 정규식
const regExp = /[0-9]/g;

이메일 체크 정규식
const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

핸드폰번호 정규식
const regExp = /^\d{3}-\d{3,4}-\d{4}$/;

일반 전화번호 정규식
const regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;

아이디나 비밀번호 정규식
const regExp = /^[a-z0-9_]{4,20}$/;

휴대폰번호 체크 정규식
const regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 

정규표현식 메서드

1. test메서드

정규식.test(문자열)

2. match메서드

문자열.match(정규식)

인수로 정규식을 받으며, 일치하는 문자열의 배열(Array) 데이터를 반환한다.

 

3.replace 메서드

문자열.replace(정규식, 대체문자)

첫 번째 인수로는 정규표현식, 두 번째 인수로는 대체하려는 문자 데이터를 넣는다. 이를 통해 일치하는 문자열을 새로운 문자열로 대체하고, 대체된 결과를 문자열(String)로 반환.

 

 

 

'Web > JavaScript' 카테고리의 다른 글

prototype과 prototype chain  (0) 2023.01.23
class문법  (0) 2023.01.23
인수와 인자, Argument & Parameter  (0) 2022.11.25
자바스크립트의 화면 출력 방법 정리  (0) 2022.11.23