如何使用正则表达式验证邮政编码?
应该采用以下模式: -
[A-z][0-9][A-Z] [0-9][A-Z][0-9]
E.g。
B5D 2M4
b5d 2m4
我正在使用Oracle9i。
提前致谢, Shubhojwal Ghosh
答案 0 :(得分:4)
不幸的是,由于您使用的是旧版本的Oracle,因此无法使用标准的正则表达式函数,如REGEXP_LIKE
。如果您要升级到适度的近期版本的Oracle,那将是最佳选择。
在旧版本的Oracle中,您必须使用OWA_PATTERN
包。请注意,由于OWA_PATTERN.MATCH
函数返回BOOLEAN
,因此无法从SQL调用它,只能从PL / SQL调用它。当然,您可以创建自己的包装函数,该函数返回一个整数或字符串,以指示邮政编码是否有效。
SQL> ed
Wrote file afiedt.buf
1 declare
2 function is_valid_zip( p_zip_code in varchar2 )
3 return boolean
4 is
5 begin
6 return owa_pattern.match( p_zip_code,
7 '[A-Z]{1}\d{1}[A-Z]{1}\d{1}[A-Z]{1}\d{1}',
8 'i' );
9 end is_valid_zip;
10 begin
11 if( is_valid_zip( 'A1B2C3' ) )
12 then
13 p.l( '1) Match' );
14 else
15 p.l( '1) No match' );
16 end if;
17 if( is_valid_zip( '12345' ) )
18 then
19 p.l( '2) Match' );
20 else
21 p.l( '2) No match' );
22 end if;
23* end;
SQL> /
1) Match
2) No match
PL/SQL procedure successfully completed.