본문 바로가기

스파르타코딩클럽

JS 정규표현식 이란?

정규표현식 正規表現式 regular expression

텍스트에서 특정한 '패턴'을 찾을 때 아주 유용하게 사용할 수 있다. 예를 들어 많은 텍스트 중에서 전화번호 형식만 찾는다던가, e-mail 형식만 찾고 싶을때 사용할 수 있고, 웹사이트에서 회원가입을 기능을 만들 때 사용자가 입력한 데이터가 e-mail 혹은 password에 부합하는지 확인하는 유효성 검사에서도 사용할 수 있다. 

 

정규표현식의 생성

1. 리터럴 (Literal) 방식

  • 리터럴은 데이터 그 자체를 의미하며 변수에 넣는 변하지 않는 데이터를 의미한다. 
  • 상수와는 다른 의미이다. 상수는 변하지 않는 변수 (메모리 위치) 
  • 리터럴은 변수의 값이 변하지 않는 데이터를 의미 (메모리 위치 안에 값)

리터럴 방식의 비밀번호 정규식 예시

정규 표현식 리터럴은 패턴(pattern)과 플래그(flag)로 구성된다. /패턴/플래그 의 형식으로 사용하며, 플래그를 사용하지 않고 패턴만 사용할 경우에는 /패턴/; 의 형식으로 사용하면 된다. 가장 일반적으로 사용하는 방식이다.

 

2. RegExp 생성자 함수 방식

const regxp1 = new RegExp(^abcd/i); //ES6
const regexp2 = new RegExp(/^abcd/, 'i');
const regexp3 = new RegExp('^abcd', 'i');

 

3. 재할당 방식 (Re-compile)

  • 사용중인 정규 표현식을 '재할당' 할 수 있다
  • 단, 상수가 아닌 변수로 선언해야 한다.
  • let regexp1 = /ipsum/g;
    regexp1 = /lorem/i;
    console.log(regexp1); // --> /lorem/i
    const regexp2 = /ipsum/g;
    regexp2 = /lorem/i;  // --> TypeError

 

정규식 패턴

 

정규식 그룹화 참고하면 좋은 글 

https://zzossig.io/posts/regexp/grouping_in_regular_expressions/