>웹 프론트엔드 >JS 튜토리얼 >이스케이프된 따옴표가 있는 경우에도 따옴표 붙은 문자열 외부의 정규식 인스턴스를 일치시키는 방법은 무엇입니까?

이스케이프된 따옴표가 있는 경우에도 따옴표 붙은 문자열 외부의 정규식 인스턴스를 일치시키는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-28 00:02:01900검색

How to Match Regex Instances Outside of Quoted Strings, Even with Escaped Quotes?

따옴표 이외의 인스턴스 일치

이전 가정과 달리 따옴표 안에 없는 특정 정규식의 모든 인스턴스를 일치시키는 것이 가능합니다. 이스케이프된 따옴표까지 고려하여 정규식을 사용하여 문자열의 일부를 처리합니다.

정규식 솔루션

이를 달성하려면 각 단어가 다음과 같은지 확인하는 예측 어설션을 활용하세요. 따옴표 외부: 뒤에 짝수 개의 따옴표가 있을 때 발생합니다. 아래 정규식은 이 패턴을 캡처합니다.

\+(?=([^"]*"[^"]*")*[^"]*$)

이스케이프된 따옴표 처리

이스케이프된 따옴표를 처리하려면 백슬래시를 무시하고 이스케이프되지 않은 다음 따옴표로 이동하도록 표현식을 수정하세요. :

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)

이렇게 하면 이스케이프된 따옴표가 여는 따옴표로 계산되지 않습니다.

.split() 및 .replace()를 사용한 JavaScript 사용

JavaScript의 .split() 및 .replace() 메소드와 함께 사용하려면 다음 코드를 사용할 수 있습니다.

const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"

위 내용은 이스케이프된 따옴표가 있는 경우에도 따옴표 붙은 문자열 외부의 정규식 인스턴스를 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.