Character classes seem to work when you surround them with brackets [] , as in:
SQL> SELECT * FROM dual WHERE regexp_like('e', '[[:upper:]]'); DUMMY ----- SQL> SELECT * FROM dual WHERE regexp_like('E', '[[:upper:]]'); DUMMY ----- X
When you use single brackets, Oracle treats them as a list of characters, i.e. it works because u contained in the string :upper: ::
SQL> SELECT * FROM dual WHERE regexp_like('u', '[:upper:]'); DUMMY ----- X
source share