[240420] 31장 RegExp

정규 표현식이란?

  • 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어
  • ES3 부터 도입
  • 문자열 대상으로 패턴 매칭 기능 제공

정규 표현식의 생성

  • 일반적으로 정규 표현식 리터럴 사용
  • 시작, 종료 기호 / 패턴 플래그로 구성
new RegExp(pattern[,flags]);

RegExp 메서드

1. RegExp.prototype.exec

  • 인수로 전달받은 문자열에 대해 정규 표현식의 패턴을 검색하여 매칭 결과를 배열로 반환
  • 매칭 결과가 없을 경우 null 반환

2. RegExp.prototype.test

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

3. String.prototype.match

  • 인수로 전달 받은 정규표현식과의 매칭 결과를 반환
  • exec는 g 플래그를 지정해도 첫 번째 매칭 결과만 반환하는데 match 는 모든 결과를 배열로 반환

플래그

| i | ignore case | 대소문자를 구별하지 않고 패턴을 검색 | | — | — | — | | g | Global | 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색 | | m | Multi line | 문자열의 행이 바뀌더라도 패턴 검색을 계속한다. |

  • 하나 이상을 동시에 사용 가능
  • 기본 값은 대소문자 구별해서 패턴 검색, 첫 번째 매칭한 대상만 검색하고 종료
const target = 'Is this all there is?';

target.match(/is/ig);
// ["Is", "is", "is]

패턴

  • / 로 열고 닫음
  • 문자열의 따옴표는 생략

1. 문자열 검색

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

target.match(/is/i);
// ["Is", index:0, input: "Is this all there is?", groups: undefined]

2. 임의의 문자열 검색

  • . 은 문자 한 개를 의미
const target = 'Is this all there is?';
// 3자리 문자열을 대소문자를 구별하여 전역 검색한다.
const regExp = /.../g;
// ["Is ", "thi", "s a", ... ] 

3. 반복 검색

  • {m,n} 은 앞선 패턴이 최소 m 번, 최대 n 번 반복되는 문자열을 의미
  • 콤마뒤에 공백 있으면 안됨
const target = 'A AA B BB Aa Bb AAA';
// A가 최소 1번 최대 2번 반복되는 문자열을 전역으로 검색
const regExp = /A{1,2}/g;
target.match(regExp); // ['A','AA','A','AA','A']
  • {n} 은 앞선 패턴이 n번 반복 {n,n} 과 같음
  • {n,} 최소 n번 이상 반복되는 문자열
    • 는 앞선 패턴이 최소 한 번 이상 반복되는 문자열 {1,} 과 같다.
  • ? 는 앞선 패턴이 최대 한 번 이상 반복되는 문자열 의미 {0,1}r과 같다.

4. OR 검색

  • 는 or 의 의미를 가짐
  • /A B/ A또는 B를 의미
  • [] 내의 문자는 or 로 동작
  • 범위로 지정하려면 - 를 사용
  • \d 숫자 의미
  • \D 숫자가 아닌 문자 의미
  • \w 알파벳 숫자 언더스코어 [A-Za-z0-9_] 와 같음
  • \W 알파벳 숫자 언더스코어가 아닌 문자 의미
// A - Z 가 한 번 이상 반복되는 문자열 전역 검색
const regExp = /[A-Z]+/g;
// A - Z 또는 a-z 가 한 번 이상 반복되는 문자열 전역 검색
const regExp = /[A-Za-z]+/g;
// 숫자 0~9 한 번 이상 반복되는 문자열
const reExp = /[0-9]+/g;
// 숫자 0~9 ','가 한 번 이상 반복되는 문자열
const regExp = /[\d,]+/g;

5. NOT 검색

  • [] 내에 ^는 not 을 의미
  • [^0-9] 는 숫자를 제외한 문자 의미

6. 시작 위치로 검색

  • [] 밖의 ^은 문자열의 시작을 의미함
  • /^https/ → http로 시작하는지 검사

7. 마지막 위치로 검색

  • $ 는 문자열의 마지막을 의미
  • /com$/ → ‘com’ 으로 끝나는지 검사

자주 사용하는 정규표현식

1. 특정 단어로 시작하는지 검사

  • /^https?:\/\//.test(url)

2. 특정 단어로 끝나는지 검사

  • /html$/.test(fileName);

3. 숫자로만 이루어진 문자열인지 검사

  • /^\d+$/.test(target);

4. 하나 이상의 공백으로 시작하는지 검사

  • /^[\s]+/ → \s는 공백 의미

5. 아이디로 사용 가능한지 검사

  • /^[A-Za-z0-9]{4,10}$/
  • 대소문자 또는 숫자로 시작하고 4~10자리인지 검사

6. 메일 주소 형식에 맞는지 검사

7. 핸드폰 번호 형식에 맞는지 검사

  • /^\d{3}-\d{3,4}-\d{4}$/

8. 특수문자 포함 여부 검사

  • /[^A-Za-z0-9]/
  • 특수 문자 제거할때 유용함 replace(/[^A-Za-z0-9]/gi , ‘’)

Categories:

Updated:

Leave a comment