정규식: 정규식 시작 부분에서 전방 예측을 사용하는 것은 무엇입니까?

정규식: 정규식 시작 부분에서 전방 예측을 사용하는 것은 무엇입니까?

긍정적인 전망은 어느 정도 이해합니다.

X(?=Y)는 "X를 찾지만 Y가 뒤에 오는 경우에만 일치함"을 의미합니다.

그러나 아래 정규식에서는 정규식 시작 부분에서 긍정적인 예측의 중요성을 이해하지 못합니다.

^(?:(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})

긍정적인 예측이 처음에 무엇을 하는지, 위의 정규 표현식이 무엇을 하는지 설명할 수 있는 사람이 있나요?

편집하다- 도움이 된다면 전체 정규식은 다음과 같습니다. -

^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9]{8,64}$

전체 정규식은 대문자, 소문자, 숫자 및 8~64자 길이를 포함하는 문자열과 일치해야 합니다.

답변1

귀하의 ^(?:(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})정규식은 다음과 같습니다

^(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9])(?!.*(.)\1{2,})`

보다정규식 데모.

여기서 미리보기를 수행 하려면 개행 문자 이외의 0개 이상의 문자 뒤에 ?=특정 패턴이 있거나( ) 없거나( ) 있어야 합니다. ?!이것은 일반적인 비밀번호 검사 정규식입니다.

^각 정방향 검사를 실행하는 데 충분하므로 앵커 문자열 start 뒤에 사용됩니다 .한 번문자열의 시작 부분에. 둘러보기는 너비가 0인 어설션이므로 네 가지 둘러보기는 모두 문자열 시작 부분에서 하나씩 트리거됩니다.

일치한다

  • ^- 문자열의 시작
  • (?=.*\d)- 개행 문자를 제외한 0개 이상의 문자 뒤에는 최소한 하나의 숫자가 와야 합니다.
  • (?=.*[A-Z])- 개행 문자 이외의 0개 이상의 문자 뒤에는 최소한 하나 이상의 대문자 ASCII 문자가 와야 합니다.
  • (?=.*[^A-Za-z0-9])- 개행 문자 이외의 0개 이상의 문자 뒤에는 ASCII 영숫자 문자 이외의 문자가 하나 이상 와야 합니다.
  • (?!.*(.)\1{2,})- 개행 문자 이외의 0개 이상의 문자 뒤에는 개행 문자 이외의 동일한 문자의 3개 이상의 연속 문자가 올 수 없습니다.

정규식 함수에 전체 문자열 일치가 필요한 경우가 있으므로 .*이는 패턴 끝에 필요할 수 있습니다.

두 번째 정규식은 실제로 다음과 같습니다 ^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?!.*(.)\1{2,})[A-Za-z0-9]{8,64}$.이 정규식 데모 및 설명. 사용된 - - 패턴 부분은 ASCII 문자 또는 숫자에만 일치하고 ASCII 영숫자 문자 이외의 문자와 일치하지 않으므로 모든 대체 항목은 (?=.*[^A-Za-z0-9])절대 일치하지 않습니다 .[A-Za-z0-9]{8,64}

관련 정보