>  Q&A  >  본문

정규식 동작의 차이점

9자리 숫자를 포함해야 하는 필드와 일치하는 정규식을 작성하려고 합니다

다음 정규 표현식을 사용합니다

으아아아

이제 문제는 할 때 입니다

으아아아

그러나 동일한 정규 표현식을 사용하여 Yup의 일치 항목을 사용하려고 하면(아래 myRegex에 전달됨)

으아아아

동일한 입력에 대해 잘못된 메시지가 표시됩니다(예: 123456789

).

왜 이런 일이 발생하는지 궁금하신가요?

업데이트: 예, value.search(regex) 를 사용하세요. 제 경우에는 "123456789".search(/^d{9,9}$/)

를 실행합니다.

위의 내용이 문제인지 확실하지 않습니까?

P粉996763314P粉996763314223일 전340

모든 응답(1)나는 대답할 것이다

  • P粉362071992

    P粉3620719922024-04-02 09:57:58

    귀하의 솔루션이 잘못된 정규식을 사용하는 것 같습니다

    Yup의 search() 메소드를 정규식과 함께 사용하면 문제가 발생합니다. search() 메서드는 첫 번째 일치 항목의 인덱스를 반환하고 전체 문자열을 계산하지 않습니다.

    "123456789"에는 연속된 9자리 숫자가 포함되어 있으므로 정규식을 충족하며 search() 메서드는 처음 나타나는 인덱스인 0을 반환합니다. 0은 참값이므로 Yup은 이를 실패한 일치로 해석하고 잘못된 메시지를 반환합니다.

    이것은 /^d{9}$/

    를 사용해 볼 수 있는 정규 표현식입니다.

    회신하다
    0
  • 취소회신하다