정규 표현식의 입력 길이 제한
정규 표현식은 텍스트의 패턴을 일치시키는 강력한 방법을 제공하며 길이를 제한해야 하는 경우가 많습니다. 일치하는 문자 수입니다. 이는 간단해 보일 수 있지만 수량자를 올바르게 적용하는 것은 어려울 수 있습니다. 이 기사에서는 패턴 끝의 수량자를 제한하는 것이 작동하지 않는 이유를 살펴보고 미리보기를 사용하는 대체 접근 방식을 제공합니다.
다음 정규식을 고려하세요.
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*$/
이 표현식은 일련의 문자, 숫자 및 기타 문자와 일치하지만 입력 문자열의 전체 길이를 제한하지는 않습니다. 문자를 15자로 제한하려면 다음을 시도해 보세요.
/(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*${1,15}/
그러나 이렇게 하면 오류가 발생합니다. 그 이유는 수량자가 전체 패턴이 아닌 바로 왼쪽에 있는 하위 패턴에 적용되기 때문입니다. 이 경우 수량자 {1,15}는 두 번째 문자 클래스에 적용되어 길이를 1~15자로 제한하지만 전체 문자열 길이는 제한하지 않습니다.
대신 입력 길이를 제한하는 올바른 방법 문자열의 시작 부분에 고정된 미리보기를 사용하는 것입니다:
^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
이 미리보기를 통해 전체 입력 문자열이 원하는 길이와 일치하는지 확인할 수 있습니다.
참고: 미리보기는 문자를 사용하지 않는 너비가 0인 어설션입니다. 후속 패턴에 따라 true 또는 false만 반환합니다.
입력에 개행 문자가 포함될 수 있는 경우 이식 가능한 [sS] 문자 클래스를 사용하여 개행 문자를 포함한 모든 문자와 일치시킬 수 있습니다.
^(?=[\s\S]{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>?()""']*$
예측을 사용하면 원하는 패턴 일치 동작을 유지하면서 입력 문자열의 길이를 효과적으로 제한할 수 있습니다.
위 내용은 Lookaheads를 사용하여 정규 표현식의 입력 길이를 제한하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!