[ 모던 자바스크립트 스터디 ] 정규 표현식

2022. 10. 22. 17:53·Archive/Develop
목차
  1. 정규 표현식 생성
  2. RegExp 메서드
  3. 플래그
  4. 패턴
728x90
반응형

학교 다닐때 배웠던 기억이 새록새록 나는 것 같다.

 

const tel = '010-1234-567팔';

const regExp = /^\d{3}-\d{4}-\d{4}$/;

regExp.test(tel); // false

 

정규 표현식 생성

 

두가지 방법이 있다.

정규표현식 리터럴과 RegExp 생성자 함수를 사용하는 것이다.

일반적으로는 정규 표현식 리터럴을 사용한다.

 

 

const target = 'Is this all there is?';

const regexp = /is/i;

regexp.test(target); -> true

 

여기서 정규표현식의 /(슬래시) 뒤 i 는 대소문자를 구별하지 않고 검색하는 플래그이다.

test 메서드는 target 문자열에 대해 정규표현식 regexp 패턴을 검색하여 매칭 결과를 불리언 값으로 반환한다.

 

 

new RegExp(pattern[, flags])

 

위와 같이 생성자 함수 RegExp 를 사용해 RegExp 객체를 만들 수도 있다.

const target = 'Is this all there is?';

const regexp = new RegExp(/is/i); // ES6
// const regexp = new RegExp(/is/, 'i');
// const regexp = new RegExp(is, 'i');

regexp.test(target); // true

 

 

 

RegExp 메서드

 

RegExp.prototype.exec

 

인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색해 매칭 결과를 배열로 반환한다.

결과가 없으면 null 을 반환한다.

 

 

const target = 'Is this all there is?';
const regExp = /is/;

regExp.exec(target);

 

 

 

exec 메서드는 문자열 내의 모든 패턴을 검색하는 g 플래그를 지정해도 첫번째 매칭 결과만 반환한다.

 

 

 

RegExp.prototype.test

 

인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 불리언 값으로 반환한다.

 

const target = 'Is this all there is?';
const regExp = /is/g;

regExp.test(target); // true

 

 

String.prototype.match

 

String 표준 빌트인 객체가 제공하는 match 메서드는

대상 문자열과 인수로 전달받은 정규 표현식과의 매칭 결과를 배열로 반환한다.

 

 

const target = 'Is this all there is?';
const regExp = /is/;

target.match(regExp);

 

 

 

이 메서드는 g 플래그 지정시 모든 매칭 결과를 배열로 반환한다.

 

 

 

플래그

 

총 6개 있는데, 그중 가장 많이 쓰이는 3개는 아래와 같다.

 

  • i : 대소문자 구별 x
  • g : 전역 검색
  • m : 멀티 라인

만약 전역 검색이 플래그가 설정되어 있지 않을 시

문자열에 패턴 매칭 대상이 1개 이상 있어도 첫번째 대상만 검색하고 종료한다.

 

 

패턴

 

패턴은 /로 열고 닫으며 문자열의 따옴표는 생략한다.

 

 

임의의 문자열 검색

. 은 문자 하나를 의미한다.

 

 

반복 검색

 

{m,n} 은 앞 패턴이 최소 m번, 최대 n 번 반복되는 문자열을 의미한다.

, 뒤에 공백이 있으면 안된다.

 

const target = 'A AA B BB Aa Bb AAA';

const regExp = /A{1,2}/g;

target.match(regExp);

 

 

패턴 n 번 반복 : {n}

패턴 최소 n 번 이상 반복 : {n,}

패턴 최소 한번 이상 반복 : +

 

+는 {1,} 과 같다.

 

 

const target = 'A AA B BB Aa Bb AAA';

const regExp = /A+/g;

target.match(regExp);

 

 

 

? 는 패턴이 최대 한 번 이상 반복되는 의미이다.

 

 

const target = 'color colour';

const regExp = /colou?r/g;

target.match(regExp);

 

 

 

 

OR 검색

 

| (파이프) 는 or 의 의미를 갖는다.

/A|B/ 는 A 혹은 B 를 의미한다.

 

분해되지 않은 단어 레벨로 검색하기 위해서는 +를 함께 사용한다.

 

const target = 'A AA B BB Aa Bb';

const regExp = /A+|B+/g;

target.match(regExp);

 

 

 

[] 내의 문자는 or로 동작한다. 그 뒤에 +를 앞선 패턴을 한 번 이상 반복한다.

 

const target = 'A AA B BB Aa Bb';

const regExp = /[AB]+/g;

target.match(regExp);

 

 

 

-를 사용하면 범위표현도 가능하다.

[a-zA-Z0-9] 와 같이 한다.

 

0-9는 \d 로, \D 는 \d 와 반대로 동작한다.

\w 는 알파벳, 숫자, 언더스코어를 의미하고, \W 는 반대로 동작한다.

 

NOT 검색

[ ] 내의 ^ 는 not 의 의미다.

 

[^0-9] 는 숫자를 제외한 문자를 의미한다.

 

시작 위치로 검색

 

[ ] 밖의 ^은 문자열 시작을 의미한다.

 

마지막 위치로 검색

 

$는 문자열의 마지막을 의미한다.

 

const target = 'https://google.com';

let regExp = /^https/;

regExp.test(target);

regExp = /com$/;

regExp.test(target);

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ 모던 자바스크립트 스터디 ] String  (0) 2022.10.22
[ 모던 자바스크립트 스터디 ] 자주 사용하는 정규표현식 (아이디 사용가능, 이메일 정규표현식, 핸드폰 번호, 특수문자 표함여부)  (0) 2022.10.22
[ 모던 자바스크립트 스터디 ] 배열 평탄화 + 배열 고차 함수  (0) 2022.10.21
[ 모던 자바스크립트 스터디 ] 클래스  (0) 2022.10.14
[ 모던 자바스크립트 스터디 ] 클로저(closure)  (0) 2022.10.14
  1. 정규 표현식 생성
  2. RegExp 메서드
  3. 플래그
  4. 패턴
'Archive/Develop' 카테고리의 다른 글
  • [ 모던 자바스크립트 스터디 ] String
  • [ 모던 자바스크립트 스터디 ] 자주 사용하는 정규표현식 (아이디 사용가능, 이메일 정규표현식, 핸드폰 번호, 특수문자 표함여부)
  • [ 모던 자바스크립트 스터디 ] 배열 평탄화 + 배열 고차 함수
  • [ 모던 자바스크립트 스터디 ] 클래스
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    백준 파이썬
    C++
    보안뉴스
    자바스크립트 객체
    파이썬 기초 문제
    카카오 100일 프로젝트
    비박스
    docker
    파이썬 백준
    Django
    oracle db
    Git
    파이썬
    Codeup
    자바스크립트 API
    코드업 기초
    javascript
    백준 풀이
    파이썬 기초
    파이썬 알고리즘
    오라클
    자바스크립트
    코드업
    코드업 파이썬 기초 100제
    백준
    Oracle
    파이썬 문제
    장고
    Python
    백준 문제풀이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ 모던 자바스크립트 스터디 ] 정규 표현식
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.