템플릿 리터럴(``)과 정규식(RegExp)

Daniel·2023년 4월 6일
0

Front-End

목록 보기
2/14
for (let item of duplication) {  
	let regex = new RegExp(`${item}`, 'g');  
	let result = example.match(regex).length;
}

위 코드에서 정규식 생성자를 생성하지않고 .match() 소괄호 안에
직접 템플릿리터럴을 이용한 문자열을 넣으려 했는데 자꾸만 오류를 뱉어냈었다.

삽질을 기록해보려한다.

메소드 문서에서는 .match()의 매개변수로 정규식, 객체(암묵적으로 new RegExp(객체) 를 사용해 변환)를 받는다고 나오는데
문자열의 한 표현방법?인 백틱을 사용하면 자꾸 오류를 뱉어내는것이였다.

나의 기대는

for (let item of duplication) {   
	let result = example.match(`\\${item}\\g`).length;
}

위 처럼 직접 넣어주면 착착 값을 뱉어주길 바랬건만...

정규식을 만들어주기위해 이스케이프문자를 사용해 \를 표현했는데 여기서 문제가 발생했었다.
메서드 내에서 직접 템플릿 리터럴을 사용하면 백슬래시가 정규식 패턴의 일부로 해석이 안된다는 것이였다.

그래서, 맨 위 코드처럼 생성자를 사용해 정규식을 생성후 넣어주는 방향으로 해결했다.

profile
응애 나 애기 개발자

0개의 댓글