자바스크립트에서 정규식을 사용할 때 괄호 안의 함정, 즉 괄호 안의 메타문자 문제에 주의해야 합니다. 나 자신도 함정에 빠졌고, 온라인으로 검색해 본 결과 많은 사람들이 이 함정에 빠졌기 때문에 대략적으로 요약해 보겠습니다.
대괄호는 정규식으로 문자 그룹(문자 클래스)이라고 합니다. 어떤 책에서는 문자 클래스로 번역하고, 다른 책에서는 문자 집합 . 결국 클래스는 객체 지향 컴퓨터 과학에서 "클래스"를 대표하는 것이 더 좋다고 생각합니다. 이름에서 알 수 있듯이 문자 그룹은 한 위치에 나타날 수 있는 다양한 문자를 나타내는 문자 그룹입니다. 여기서 강조점은 하나의 위치만 일치시키는 것입니다. (이 단락은 http://www.cnblogs.com/snandy/p/3662423.html에서 발췌한 것입니다.)
은 임의의 문자를 가져오는 곳을 사용했기 때문에 [.n]*을 사용하여 테스트한 결과 true를 반환했지만 특정 환경에 넣는 것은 잘못되었습니다. . . . . . 맙소사, 이해할 수가 없어요.
단호하게 테스트하세요 var testp = /xx>[.n]*/ testp.test("xx>asdfdfasd") 뒤에 "xx>"를 넣으면 그래도 맞습니다. "xx>"는 양쪽 모두 거짓입니다. 왜 이런가요? ? ? ? ? ?
그래서 var testp = /
(xx>[.n]*)/을 다시 만들었습니다. 을 변경하고 괄호 를 추가하여 일치하는 문자열을 캡처합니다. . 테스트 후 RegExp.$1이 비어 있는 것으로 나타났습니다. . . . . 비어 있습니다. . . . 왜요? ? ? ?
테스트의 문자열 매개변수를 (".......")로 변경하면 이런 점의 문자열이 나타납니다. 따라서 대괄호 안의 점은 점만 나타내며 메타문자 구분이 아닙니다. 그 이외의 단일 문자의 의미. 그래서 온라인으로 검색해봤습니다:
“문자군에 메타문자가 많아 일반문자가 됐다” 메타문자가 아닌 일반문자가 되었고 "?", "+", 및 "*"는 대괄호 안에 넣으면 일반 문자가 됩니다.
그래서 여전히 이 함정을 조심해야 합니다. . . .
그런데 의 모든 문자는 [sS]로 대체될 수 있습니다.
위 자바스크립트 정규식 목록 중 대괄호 안의 [피트]는 편집자가 공유한 모든 내용이므로 참고가 되셨으면 좋겠습니다. Script Home을 지원해 주시길 바랍니다.