>  기사  >  웹 프론트엔드  >  정규식에서 마침표를 사용하는 범주는 무엇입니까?

정규식에서 마침표를 사용하는 범주는 무엇입니까?

php中世界最好的语言
php中世界最好的语言원래의
2018-06-09 14:38:011403검색

이번에는 정규식에서 마침표를 사용하는 범주는 무엇인지, 정규식에서 마침표를 사용할 때 주의사항은 무엇인지 알려드리겠습니다. 다음은 실제 사례를 살펴보겠습니다.

정규식에서는 .이 모든 단일 문자를 나타내는 데 사용될 수 있다는 것을 알고 있지만 밑줄 및 jquery의 소스 코드에서는 이러한 유명한 라이브러리의 코드에서 가 어떤 문자도 나타내는 데 사용되지 않는 경우가 많습니다. . 대신 [wW] 또는 [sS]를 사용하세요. 얼핏 보면 표현의 의미가 같아 보이지만 간단한 방법을 사용하여 더 많은 원을 둘러보면 어떨까요? 오늘은 이 문제에 대해 간단히 말씀드리겠습니다.

먼저 의 의미를 정확하게 이해해야 합니다. 실제로 이것이 임의의 단일 문자를 나타낸다고 말하는 것은 오해의 소지가 있을 수 있습니다. 이 "단일 문자"에는 줄바꿈을 제어하는 ​​문자가 포함되지 않는다는 점, 즉 n r u2028 또는 u2029 문자가 포함되지 않는다는 점을 강조해야 합니다. W 및 s에는 다음 문자가 포함될 수 있습니다. 두 가지 쓰기 방법의 차이점은 매우 명확합니다. 즉, 여러 개행 제어 문자와 일치할 수 있는지 여부입니다.

그렇다면 언제 이러한 개행 제어 문자를 고려해야 할까요? 처리할 문자열에 개행 문자가 포함될 수 있는 경우. HTML 문자열 처리, 템플릿 처리, nodejs 텍스트 읽기 등의 시나리오가 너무 많습니다.

여러 줄 텍스트 시나리오의 경우 정규식의 m 모드(다중 줄 모드)를 쉽게 생각할 수 있습니다. 그렇다면 다중 회선 모드가 오늘 논의하는 문제에 어떤 영향을 미치나요? 잘 모르겠습니다. 왜 확실하지 않습니까? 어떤 사람들은 한 줄 모드에서 .의 의미가 여러 줄 모드의 의미와 다르다고 주장합니다. 한 줄 모드에서는 [wW] 또는 [sS]와 동일하지만 여러 줄 모드에서는 개행 문자입니다. 제어 문자는 제외됩니다. 그러나 내 실험과 MDN을 참조하면 이는 잘못된 것입니다. 여러 언어의 정규 표현식이 위와 같은 특징을 갖고 있는 것은 사실인데, 자바스크립트에서는 본 적이 없어서 브라우저에서 차이가 있는지는 모르겠습니다. 그렇다면 여러 줄 모드가 JavaScript에 어떤 영향을 미칠까요? 내 생각에는 ^ 및 $ 플래그의 의미가 변경된 것 같습니다. 단일 행 모드에서는 각각 전체 문자열의 시작과 끝을 나타내고, 다중 행 모드에서는 각 행의 시작과 끝을 나타냅니다. 여러 줄 모드 또는 한 줄 모드에 관계없이 . 에는 개행 제어 문자가 포함되어 있지 않으며 [^nru2028u2029]와 같습니다.

좀 더 확장하면 최신 브라우저의 경우 [^]를 직접 사용하여 모든 문자와 일치시킬 수 있습니다.

예제 프로그램을 작성하고 싶지는 않으니 관심이 있으시면 직접 해보고 /.*/g, /^.*$/g, /.*/gm, /^.*$를 사용해 보세요. /gm을 "abcnedf" "와 일치시키는 이유는 자명합니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

프로젝트에서 JS 이벤트 위임을 사용하는 방법

정규 표현식을 사용하여 비밀번호 강도 확인(코드를 사용하는 두 가지 방법)

위 내용은 정규식에서 마침표를 사용하는 범주는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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