使用正则表达式验证邮政编码

时间:2014-04-20 17:17:11

标签: regex

我在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;

以上代码正在接受&#39;!234&#39;作为有效的代码。我不确定我错在哪里。任何人都可以在代码中指出错误

1 个答案:

答案 0 :(得分:1)

使用正则表达式:

^null$|^\d{4}$

您正在使用\b标记边界。由于您的输入仅为1234null或类似,您只需使用开始(^)和结束($)锚定。

正则表达式分解:

  1. ^null$ - 仅null

  2. | - 或。

  3. ^\d{4}$ - 四位数字符串,如1234

  4. <强> Regex101