>웹 프론트엔드 >JS 튜토리얼 >JavaScript Regex가 'm' 플래그를 사용하여 여러 줄 텍스트를 추출하지 못하는 이유는 무엇입니까?

JavaScript Regex가 'm' 플래그를 사용하여 여러 줄 텍스트를 추출하지 못하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-10 01:36:021004검색

Why Does JavaScript Regex Fail to Extract Multiline Text with the 'm' Flag?

정규식 딜레마: 여러 줄 텍스트 추출

JavaScript 정규식을 사용하여 HTML에서 텍스트를 추출하려는 개발자는 예상치 못한 장애물에 직면했습니다. 여러 줄 플래그(m)는 여러 줄 텍스트를 캡처하는 데 효과적이지 않은 것 같습니다.

제공된 정규식 패턴은 h1 태그 내에 포함된 텍스트를 추출하는 것을 목표로 합니다.

var pattern = /<div>

그러나 HTML 문자열에 줄 바꿈이 포함된 경우 (n), 결과는 지속적으로 비어 있었습니다. m 플래그 존재 여부에 관계없이 개행 문자를 제거하면 문제가 해결되었습니다.

해결책: Dotall 수정자

범인은 dotall 수정자가 부족하다는 데 있습니다. 자바스크립트. 기본적으로 점(.)은 개행 문자를 제외한 모든 문자와 일치합니다. 이러한 제한을 극복하기 위해 문자 클래스 및 해당 부정과 관련된 해결 방법을 사용할 수 있습니다.

[\s\S]

이 문자 클래스는 줄 바꿈 및 기타 공백을 포함한 모든 문자와 일치합니다. 정규 표현식에 통합하면 다음과 같은 결과가 나옵니다.

/<div>

DotAll 플래그가 포함된 최신 솔루션

ES2018부터 JavaScript는 s(dotAll) 플래그를 지원합니다. 이 플래그는 점이 개행 문자와 일치하도록 정규식 엔진에 명시적으로 지시하므로 해결 방법이 필요하지 않습니다.

/<div>

위 내용은 JavaScript Regex가 'm' 플래그를 사용하여 여러 줄 텍스트를 추출하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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