Skip to content
← Back to rules

eslint/no-useless-backreference 정확성

This rule is turned on by default.

작동 방식

정규 표현식 내에서 백레퍼런스가 항상 무시될 경우를 금지합니다.
이유는 해당 백레퍼런스가 참조하는 캡처 그룹이 평가 시점에 아직 매칭되지 않았으며,
매칭할 수 없는 상태이기 때문입니다.

왜 문제가 되는가?

불필요한 백레퍼런스는 혼란스럽거나 오해를 불러일으킬 수 있는 정규 표현식을 초래할 수 있습니다.
그룹의 값이 재사용되고 있다는 착각을 줄 수 있지만, 패턴의 구조(예: 평가 순서, 선택 사항, 부정 룩백 등)상
그룹이 어떤 내용도 매칭하지 않았기 때문에, 백레퍼런스는 항상 빈 문자열로 해결됩니다.
이는 거의 항상 실수이며, 패턴을 이해하고 유지보수하기 어렵게 만듭니다.

예시

이 규칙에 대해 잘못된 코드 예시:

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

참고 자료