Regexp non usa \ per proteggere - in un'espressione parentesi . Devi solo inserire - come primo carattere, subito dopo la parentesi aperta:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Se sei curioso, quando incontri [\-,:] Oracle comprende:"qualsiasi carattere nell'intervallo da \ a , o il carattere : " . Il motivo per cui questo solleva un'eccezione è \ sembra essere dopo , secondo il loro valore ASCII. E Oracle non accetta intervallo avendo un valore iniziale dopo quello finale.
D'altra parte:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Funziona come previsto.
Come nota a margine,
[-,:]{0,1} che significa "zero o una occorrenza di - o , o : " potrebbe essere scritto [-,:]? .