Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트에서 부정 룩비하드(Negative Lookbehind) 구현하는 방법

자바스크립트에서 부정 룩비하드(Negative Lookbehind) 사용하기

자바스크립트의 정규표현식에서 부정 룩비하드를 구현하려면 다음 패턴을 사용할 수 있습니다.

(^|[^\\])"

이 패턴은 문자열의 시작(^) 또는 백슬래시(\)가 아닌 문자 바로 뒤에 오는 큰따옴표(")와 일치합니다. 즉, 백슬래시로 이스케이프 처리된 큰따옴표는 제외하고, 이스케이프되지 않은 큰따옴표만 찾아냅니다.

큰따옴표를 작은따옴표로 교체하기

위 패턴을 활용해 이스케이프되지 않은 큰따옴표를 작은따옴표(')로 교체하는 코드는 다음과 같습니다.

str.replace(/(^|[^\\])"/g, "$1'")

여기서 $1은 캡처 그룹(문자열 시작 또는 백슬래시가 아닌 문자)을 참조하여, 교체 후에도 해당 문자가 원본 그대로 유지되도록 합니다. 마지막의 g 플래그는 문자열 전체에서 일치하는 모든 항목을 한 번에 찾아 교체하도록 하는 역할을 합니다.

ES2018 이후: 네이티브 룩비하드 문법

참고로 ES2018부터 자바스크립트는 부정 룩비하드 어설션을 네이티브로 공식 지원합니다. 다음과 같이 (?<!...) 문법을 직접 사용할 수 있습니다.

str.replace(/(?<!\\)"/g, "'")

이 방식은 캡처 그룹 없이 더 간결하게 동일한 결과를 얻을 수 있으며, 최신 브라우저와 Node.js 환경에서 안정적으로 동작합니다. 구형 환경을 지원해야 한다면 앞서 소개한 캡처 그룹 방식을 사용하는 것이 좋습니다.