我在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;作为有效的代码。我不确定我错在哪里。任何人都可以在代码中指出错误
答案 0 :(得分:1)
使用正则表达式:
^null$|^\d{4}$
您正在使用\b
标记边界。由于您的输入仅为1234
或null
或类似,您只需使用开始(^
)和结束($
)锚定。
正则表达式分解:
^null$
- 仅null
。
|
- 或。
^\d{4}$
- 四位数字符串,如1234
。
<强> Regex101 强>