$price 문자열의 형식을 확인하는 데 오류가 발생했습니다.
문자열은 통화 기호로 시작됩니다. (너무 많아서 생략하겠습니다. 아래에 ?로 표시하겠습니다.)
따라서 올바른 형식은 "?12.34" 또는 "? 2.34" 또는 "?2.34"입니다. 잘못된 형식은 "1234" / "234"입니다.
그래서 우선 전역 검색을 사용하여 소수점에 대한 부정 일치를 확인합니다(이제 재미있는 정규식). 한 자리 또는 두 자리 0-9의 NEGATIVE(즉, 준수하지 않음)를 확인하려고 합니다. 0~9의 두 자리 숫자로 표시됩니다. 나는 다음과 같은 (테스트되지 않은) 이론 패턴을 생각해 냈습니다. 첫 번째 복잡한 정규식이므로 제대로 이해했나요?
if ($price eq ''){
say'';
say 'You did not enter any price. Try again';
say'';
}
elsif ($price !~ /\./g ){
say'';
say 'Please include a decimal point';
say'';
}
elsif ($price !~ /[0-9]{1,2}\.[0-9]{2}$/){
say'';
say 'Please check the format of price (XX.XX)';
say'';