안녕하세요!! 이번시간에는 변수로 정규표현식을 만드는 방법을 알아보도록 하겠습니다~~
정규표현식이란?
문자열을 처리하는 방법 중의 하나인데 어떠한 조건의 문자를 손쉽게 검색하거나 바꿀 수 있게 도와주는 매우 편리한 수단입니다!
그럼 바로 코드로 살펴보겠습니다!
만약 제가 아래와 같은 문자에서 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 의 뜻은 슬래쉬안에 있는 모든 문자를 대소문자 구분없이 사용하겠다는 정규표현식입니다!
하지만 위의 식처럼 쓰면 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"))
그러면 원하는 결과값이 잘 나오는 것을 볼 수 있습니다!
이렇게 간단하게 변수를 받아 정규표현식을 처리하는 방법을 알아봤습니다.
감사합니다.