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

2022. 10. 22. 17:53·Archive/Develop
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
'Archive/Develop' 카테고리의 다른 글
  • [ 모던 자바스크립트 스터디 ] String
  • [ 모던 자바스크립트 스터디 ] 자주 사용하는 정규표현식 (아이디 사용가능, 이메일 정규표현식, 핸드폰 번호, 특수문자 표함여부)
  • [ 모던 자바스크립트 스터디 ] 배열 평탄화 + 배열 고차 함수
  • [ 모던 자바스크립트 스터디 ] 클래스
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

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

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

    • 배고픕니다
  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바