유니코드 플래그가 있는 정규식 패턴의 유효성
HTML 패턴 속성의 RegExp 패턴 관련 문제
HTML 패턴 속성에서 'v' 플래그와 함께 정규식 패턴을 사용하면 "SyntaxError" 오류가 발생할 수 있습니다. 이 오류는 패턴을 RegExp 객체로 컴파일할 때 'v' 플래그가 자동으로 적용되기 때문에 발생합니다.
문자 클래스 빼기 및 이스케이프
'v' 플래그는 문자 클래스 끝에 리터럴 '-' 문자를 허용하지 않는 더 엄격한 이스케이프 규칙입니다. 이는 이러한 제한이 없는 'u' 플래그와 대조됩니다.
'u' 및 'v' 플래그가 있는 정규식 패턴
다음을 고려하세요. 정규식 패턴:
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
'u' 플래그 적용:
<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")); // true</code>
'v' 플래그 적용(HTML 패턴 속성에서 자동으로):
<code class="js">console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // SyntaxError</code>
해결
오류를 해결하려면 문자 클래스 끝의 '-' 문자를 이스케이프해야 합니다. 수정된 패턴은 다음과 같습니다.
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
이제 이 패턴은 'v' 플래그가 있든 없든 모두 올바르게 작동합니다.
위 내용은 HTML 패턴 속성의 \'v\' 플래그로 인해 내 정규식 패턴이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!