2017-05-24 7 views
2

なぜこのOracle regexp_likeの表現テストはFALSEですか? Oracle 11gでこのPLSQLを実行しています。なぜこのOracle regexp_likeテストはFALSEですか?

v_stringは、0と2つのスペースです。それはREGEX101

Oracle regexp_like

declare v_string varchar2(30) := '0 '; 

begin  
dbms_output.put_line('Length is ' || length(v_string)); 

if regexp_like(v_string,'^[0-9A-Z\s]{1,3}$') then 
     dbms_output.put_line('TRUE');  
else  
     dbms_output.put_line('FALSE');  
end if; 

end; 
+1

参考:Oracleの正規表現は空白と一致しません。しかし、それは '0 'にマッチします。 –

答えて

4

あなたはそれが2つの別々の文字、\sとして扱われるので、ブラケット表現の内部に速記文字クラスを使用してはならないでTRUEテストします。 [:space:] POSIX文字クラスを使用してください:

'^[0-9A-Z[:space:]]{1,3}$' 
     ^^^^^^^^^ 
+1

ありがとうございました。私を正しい方向に向けると、https://docs.oracle.com/cd/B12037_01/server.101/b10759/ap_posix001.htm#i690819 – zundarz

関連する問題