이를 설명하려면 다음 예를 고려하세요.
이 경우 정규식을 생성하기 위해 문자열 리터럴 '(\s|^)' foo가 RegExp 생성자에 전달됩니다. 그러나 초기 백슬래시는 문자열 파서에서 사용되며 정규식 엔진에는 's|^)' foo가 남습니다. 예상치 못한 입력으로 인해 오해가 발생할 수 있습니다.
이러한 오해의 구체적인 예는 .:
const res = new RegExp('(\s|^)' + foo).test(moo);
로그인 후 복사
과 같은 특수 문자에 대해 단일 이스케이프를 사용할 때 발생합니다. 이 경우 의도는 를 사용하여 모든 문자를 일치시키는 것입니다. 와일드카드. 그러나 이후 문자열 파서에서 소비되므로 . 더 이상 와일드카드가 아닌 문자 그대로의 점으로 처리됩니다. 이로 인해 점 문자만 일치하는 잘못된 정규식이 발생합니다.
이러한 잘못된 해석을 피하려면 RegExp 생성자에 제공된 문자열을 이중 이스케이프하는 것이 중요합니다. 각 특수 문자 앞에 백슬래시를 추가하면 정규식 엔진이 의도한 이스케이프 시퀀스를 올바르게 구문 분석하도록 할 수 있습니다.
아래 예에서는 이중 이스케이프가 적용됩니다.
const string = '.*';
console.log(string);
로그인 후 복사
이것은 의도한 이스케이프 시퀀스를 보존하여 정규식을 올바르게 구성하고 정확한 일치 동작을 보장합니다. 문자열 리터럴과 함께 RegExp 생성자를 사용할 때 특수 문자의 예상치 못한 해석을 방지하기 위해 항상 이중 이스케이프를 수행해야 한다는 점을 기억하세요.
위 내용은 JavaScript RegExp 생성자를 사용할 때 문자열을 이중 이스케이프해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!