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;
}
위 처럼 직접 넣어주면 착착 값을 뱉어주길 바랬건만...
정규식을 만들어주기위해 이스케이프문자를 사용해 \를 표현했는데 여기서 문제가 발생했었다.
메서드 내에서 직접 템플릿 리터럴을 사용하면 백슬래시가 정규식 패턴의 일부로 해석이 안된다는 것이였다.
그래서, 맨 위 코드처럼 생성자를 사용해 정규식을 생성후 넣어주는 방향으로 해결했다.