정규표현식

Ji Hyeok Im·2023년 3월 8일
0

Javascript

목록 보기
13/17

정규 표현식이란?

정규 표현식(Regular Expression, RegExp) 이란 문자열에서 특정한 규칙을 가지는 문자열의 집합을

찾아내거나 또는 특정한 규칙과 문자열을 비교하기 위한 "검색 패턴"이다.

모든 종류의 문자열 "검색이나 교체" 등의 작업에서 사용할 수 있다.

정규 표현식은 정규 표현식 리터럴이나 RegExp 객체를 이용해서 생성한다.

정규 표현식의 문법은 다음과 같다.

/검색패턴/
/검색패턴/검색플래그

/ / 안에 검색패턴으로 글자 패턴과 글자를 의미하는 기호들, 횟수를 나타내는 기호들을 사용하고

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

다음엔 "abc" 라는 패턴을 검색하는 정규표현식이다.

var regExp = /abc/;
var myStr1 = "ABCabcadc";
var myStr2 = "adcababac";

document.write(regExp.test(myStr1); // true
document.write(regExp.test(myStr2); // false

정규표현식 객체의 메서드로 사용되는 test() 는 변수로 대입된 인자의 문자열에서 패턴을 검색해서

패턴이 있으면 true, 없으면 false를 반환한다.

정규표현식에 사용되는 기호들

/ / 사이에 사용되는 기호들 1

\d : 숫자 하나의 문자 검색함[0-9]
\D : 숫자가 아닌 하나의 문자를 검색함 [^0-9]
/w : 언더스코어(), 영문자, 숫자 중 하나의 문자 검색함 [A-Za-z0-9_]
/W : 언더스코어(
), 영문자, 숫자가 아닌 하나의 문자 검색 [^A-Za-z0-9_]
/s : 띄어쓰기, 탭, 줄 바꿈 문자 등의 하나의 공백 문자를 검색
/S : 띄어쓰기, 탭, 줄 바꿈 문자 등의 공백 문자가 아닌 하나의 문자를 검색
.(도트) : 임의의 한 문자를 의미
\b : 문자열의 빈칸으로 구분되는 여러 단어 중 패턴이 뒤에 나오는 첫번째 단어에서의 위치를 반환
\ : \ 다음 일반 문자가 나오면 이스케이프 문자로 해석하고, 특수 문자가 나오면 일반 문자로 해석.

횟수를 나타내는 기호들

* : 0회 이상. ex) /ab*/ : a 다음에 b가 0회 이상 나옴
+ : 1회 이상. ex) /ab+/ : a 다음에 b가 1회 이상 나옴
? : 없거나 1번 이상 있음. ex) /ab?/ : a 다음에 b가 없거나 한번 있음
( ) : 하나의 단위로 취급 ex) /(ab)+/ : ab가 1회 이상 나옴
{n} : 정확히 n번 반복 ex) /ab{3}/ : a 다음에 b가 3회 나옴
{n,} : 최소 n번 이상 반복 ex) /ab{3,}/ : a 다음에 b가 3회 이상 나옴
{n,m} : n부터 m번 반복 ex) /ab{3,5}/ : a다음에 b가 3회부터 5회 반복

검색 플래그

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

/ / 안에서 사용되는 기호들 2

  • [ ]

ex1) /[adf]/ : 문자열에 a 또는 d 또는 f 중 한 문자를 검색
ex2) /[abcdef]/ : a~f 까지 문자 중 하나, /[a-f]/ 와 동일

[ ] 안에서 ( ) 및 . 은 문자로서 사용된다.

ex) /[abc(.]/ : 문자열에서 a~c 까지 문자 또는 ( 또는 . 을 검색

  • ( ) : 하나의 단위로 취급

ex1) /(ab)+/ : ab가 1회 이상 나옴
ex2) /(\d\w)+/ : 숫자 하나 다음에 "영문 대/소문자/숫자/_" 중 하나가 1회 이상 나옴

  • ^기호
    [ ] 밖에서 사용되면 시작된다는 의미
    [ ] 안에서 사용되면 부정의 의미

ex1) /^(abc)/ : 문자열이 abc로 시작해야 함
ex2) /^[^A-Za-z]/ : 영문 대/소문자가 아닌 문자 중 하나로 시작해야 함
ex3) /^[^0-9]/ : 숫자가 아닌 문자 중 하나로 시작해야 함

  • $기호 : 끝나는 의미

ex1) /(abc)$/ : 문자열이 abc로 끝나야 함
ex2) /[^A-Za-z]$/ : 영문 대/소문자가 아닌 문자 중 하나로 끝나야 함
ex3) /[^0-9]$/ : 숫자가 아닌 문자 중 하나로 끝나야 함

  • | : or의 기능을 하는 기호. 반드시 ( ) 안에서 사용해야 함

ex1) /(a|b)c/ : a 또는 b 다음에 c가 와야 함
ex2) /([ab]|c)/ : a 또는 b 또는 c

profile
Programming study

0개의 댓글