脱字符(^)放在方括号([])外面表示匹配以方括号([])里面的任何字符开头的字符串;

脱字符(^)放在方括号([])里面表示匹配包含有任何不在方括号([])里面的字符的字符串。

SQL> select 1 x from dual where regexp_like('0a','^[0-9]');

X
----------
1

SQL> select 1 x from dual where regexp_like('1a','^[0-9]');

X
----------
1

SQL> select 1 x from dual where regexp_like('a0','^[0-9]');

X
----------

SQL>

'^[0-9]'匹配以数字开头的。

-----------------------------------------------------------------

SQL> select 1 x from dual where regexp_like('111','[^0-9]');

X
----------

SQL> select 1 x from dual where regexp_like('1a11','[^0-9]');

X
----------
1

SQL> select 1 x from dual where regexp_like('111a','[^0-9]');

X
----------
1

SQL>

'[^0-9]'匹配包含有不是数字的。

[0-9]等价于[:digit:]