2014-04-20 3 views
1

우편 번호를 확인하기 위해 pl/sql에 함수를 작성했습니다. 유효성 검사 조건은 4 자리 숫자와 null 만 유효한 코드로 받아 들여야한다는 것입니다. 다음은 내가 작성한 것입니다 :정규식을 사용하여 우편 번호 유효성 검사

create or replace function is_valid_zip(p_zip_code in varchar2) 
return boolean 
is 
begin 
      if (length(trim(p_zip_code)))<>4 
      then return false; 
      elsif (owa_pattern.match(p_zip_code,'\b\d{4}\b')) 
      then return true; 
      elsif (p_zip_code is null) 
      then return true; 
      else 
      return false; 
      end if; 
end; 

위 코드는 '! 234'를 유효한 코드로 사용하고 있습니다.

^null$|^\d{4}$ 

당신은 경계를 표시하는 \b를 사용 : 나는 누군가가 코드에서

답변

1

사용 정규식 실수를 지적 wrong.Can 어딘지 모르겠습니다. 입력 내용이 1234 또는 null이거나 이와 비슷하게 start (^) 및 end ($) 앵커를 사용하면됩니다.

정규식 분해 :

  1. ^null$ - null 만.

  2. | - 또는.

  3. ^\d{4}$ - 1234과 같은 4 자리 문자열입니다.

Regex101

+0

하지만 howcome! "234"\ "ㄱ \의 D {4} \의 (B)를"정규 표현식을 사용하여 매칭되는? 나는 d {4}가 문자열의 4 자리와 일치해야 함을 의미합니까? –

+0

최소한. NET에서 정규식 작동 - http://refiddle.com/si1 –

+1

답장 Gaurang 주셔서 감사합니다. 온라인 링크에서 잘 작동하지만 코드에서 바꿀 때 '1234'가 유효하지 않은 것으로 표시됩니다. elsif (owa_pattern.match (p_zip_code, '^ null $ |^\ d {4} $')) 그런 다음 true를 반환하고, 그렇지 않으면 false를 반환합니다. – Esha

관련 문제