Wyrażenie regularne nie używaj \ aby chronić - w wyrażeniu w nawiasie . Musisz tylko umieścić - jako pierwszy znak, zaraz po nawiasie otwierającym:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Jeśli jesteś ciekawy, kiedy napotykasz [\-,:] Oracle rozumie:"dowolny znak z zakresu od \ do , lub znak : . Powodem, dla którego powoduje to wyjątek, jest \ wydaje się być po , zgodnie z ich wartością ASCII. A Oracle nie akceptuje zakresu mający wartość początkową po końcowej.
Z drugiej strony:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Działa zgodnie z oczekiwaniami.
Na marginesie,
[-,:]{0,1} co oznacza "zero lub jedno wystąpienie - lub , lub : można zapisać [-,:]? .