9자리 숫자를 포함해야 하는 필드와 일치하는 정규식을 작성하려고 합니다
다음 정규 표현식을 사용합니다
으아아아이제 문제는 할 때 입니다
으아아아그러나 동일한 정규 표현식을 사용하여 Yup의 일치 항목을 사용하려고 하면(아래 myRegex에 전달됨)
으아아아동일한 입력에 대해 잘못된 메시지가 표시됩니다(예: 123456789
).왜 이런 일이 발생하는지 궁금하신가요?
업데이트: 예, value.search(regex) 를 사용하세요. 제 경우에는 "123456789".search(/^d{9,9}$/)
를 실행합니다.위의 내용이 문제인지 확실하지 않습니까?
P粉3620719922024-04-02 09:57:58
귀하의 솔루션이 잘못된 정규식을 사용하는 것 같습니다
Yup의 search() 메소드를 정규식과 함께 사용하면 문제가 발생합니다. search() 메서드는 첫 번째 일치 항목의 인덱스를 반환하고 전체 문자열을 계산하지 않습니다.
"123456789"에는 연속된 9자리 숫자가 포함되어 있으므로 정규식을 충족하며 search() 메서드는 처음 나타나는 인덱스인 0을 반환합니다. 0은 참값이므로 Yup은 이를 실패한 일치로 해석하고 잘못된 메시지를 반환합니다.
이것은 /^d{9}$/