with t as(select '21.43243' c from dual)select * from twhere regexp_like(c,'^(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$');