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 [-,:]?
.