Regexp n'utilise pas \ pour protéger - dans une expression entre parenthèses . Il suffit de mettre - comme premier caractère, juste après la parenthèse ouvrante :
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Si vous êtes curieux, lorsque vous rencontrez [\-,:] Oracle comprend :"n'importe quel caractère dans la plage de \ à , ou le caractère : " . La raison pour laquelle cela lève une exception est \ semble être après , selon leur valeur ASCII. Et Oracle n'accepte pas la plage ayant une valeur de départ après celle de fin.
D'autre part :
IF REGEXP_LIKE('--,,::', '[-,:]*')
Fonctionne comme prévu.
En passant,
[-,:]{0,1} signifiant "zéro ou une occurrence de - ou , ou : " pourrait s'écrire [-,:]? .