eslint/no-useless-backreference 정확성
작동 방식
정규 표현식 내에서 백레퍼런스가 항상 무시될 경우를 금지합니다.
이유는 해당 백레퍼런스가 참조하는 캡처 그룹이 평가 시점에 아직 매칭되지 않았으며,
매칭할 수 없는 상태이기 때문입니다.
왜 문제가 되는가?
불필요한 백레퍼런스는 혼란스럽거나 오해를 불러일으킬 수 있는 정규 표현식을 초래할 수 있습니다.
그룹의 값이 재사용되고 있다는 착각을 줄 수 있지만, 패턴의 구조(예: 평가 순서, 선택 사항, 부정 룩백 등)상
그룹이 어떤 내용도 매칭하지 않았기 때문에, 백레퍼런스는 항상 빈 문자열로 해결됩니다.
이는 거의 항상 실수이며, 패턴을 이해하고 유지보수하기 어렵게 만듭니다.
예시
이 규칙에 대해 잘못된 코드 예시:
js
/\1(a)/; // 백레퍼런스가 그룹보다 앞에 위치함
/(a|\1b)/; // 그룹과 참조가 서로 다른 선택 사항에 있음
/(?<=\1(a))b/; // 룩백에서 그룹보다 앞서 백레퍼런스 사용됨
/\1(?!(a))/; // 그룹이 부정 룩아헤드 내부에 있음
/(a\1)/; // 백레퍼런스가 자신만의 그룹 내부에 있음이 규칙에 대해 올바른 코드 예시:
js
/(a)\1/; // 유효 — 백레퍼런스가 완료된 그룹 뒤에 옴
/(?<name>a)\k<name>/; // 이름이 지정된 그룹이 적절히 사용됨
/(?:a|(b))\1/; // 그룹이 매칭될 때만 백레퍼런스 사용됨사용 방법
구성 파일 또는 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:
json
{
"rules": {
"no-useless-backreference": "error"
}
}bash
oxlint --deny no-useless-backreference