HooneyLog

변수로 정규표현식 처리하는 방법

프로필 이미지

Seunghoon Shin

2022년 4월 29일 23:24

안녕하세요!! 이번시간에는 변수로 정규표현식을 만드는 방법을 알아보도록 하겠습니다~~

정규표현식이란?

문자열을 처리하는 방법 중의 하나인데 어떠한 조건의 문자를 손쉽게 검색하거나 바꿀 수 있게 도와주는 매우 편리한 수단입니다!

그럼 바로 코드로 살펴보겠습니다!

만약 제가 아래와 같은 문자에서 a라는 알파벳을 대소문자 구분없이 없애고 띄어쓰기로 치환하고 싶다면 어떻게 해할까요?

const text = "안a녕A하a세A요a저a는A신a승A훈a입a니A다";

맞습니다! 바로 아래와 같은 정규표현식을 사용해서 하면됩니다

const reg = text.replace(/a/gi," ");

//"안 녕 하 세 요 저 는 신 승 훈 입 니 다"
console.log(reg)

/a/gi 의 뜻은 슬래쉬안에 있는 모든 문자를 대소문자 구분없이 사용하겠다는 정규표현식입니다!

  • g가 모든 문자를 나타내는 의미이고 i가 대소문자 구분없이 사용하겠다는 뜻입니다.
  • 하지만 위의 식처럼 쓰면 a라는 문자 하나에만 한정된 정규표현식이 되어버립니다!

    저희는 이것을 유틸함수로 만들어서 조금 더 유연하게 쓰고 싶으니까 함수를 하나 만들어봅시다.

    아래와 같이 A라는 문자를 letter이라는 파라미터로 넘겼고 그것을 치환하고 싶어 아래와 같이 코드를 만들었습니다. 과연 될까요?

    const text = "안a녕A하a세A요a저a는A신a승A훈a입a니A다";
    
    const replaceLetter = (text:string,letter:string) => {
      return text.replace(/letter/gi," ");
    }
    
    console.log(replaceLetter(text,"A"))

    정답은.. 아니오!

    "안a녕A하a세A요a저a는A신a승A훈a입a니A다"

    리턴된 결과값은 text로 넘겼던 문자 그대로가 나와버립니다!

    기본적으로 정규표현식으로 사용하기 위해 만든 // 안에는 변수를 넣지 못합니다.

    그러면 어떠한 방법이 있을까요?

    생성자 new RegExp()를 만들어 바꾸고 싶은 문자와 옵션을 넣어 인스턴스를 만들고 그 인스턴스를 활용하시면 됩니다!

    그러면 바로 아래와 같이 만들 수 있죠!

    const replaceLetter = (text:string,letter:string) => {
      const reg = new RegExp(letter,"gi");
      return text.replace(reg," ");
    }
    
    //"안 녕 하 세 요 저 는 신 승 훈 입 니 다"
    console.log(replaceLetter(text,"A"))

    그러면 원하는 결과값이 잘 나오는 것을 볼 수 있습니다!

    이렇게 간단하게 변수를 받아 정규표현식을 처리하는 방법을 알아봤습니다.

    감사합니다.