Regexp gebruikt geen \ om - te beschermen tussen een uitdrukking tussen haakjes . Je hoeft alleen - . in te voeren als het eerste teken, net na de openingshaak:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Als je nieuwsgierig bent, bij het tegenkomen van [\-,:] Oracle begrijpt:"elk teken in het bereik van \ naar , of het teken : " . De reden waarom dit een uitzondering oplevert is \ lijkt na . te zijn , volgens hun ASCII-waarde. En Oracle accepteert geen bereik met een startwaarde na de eindwaarde.
Aan de andere kant:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Werkt zoals verwacht.
Als een kanttekening,
[-,:]{0,1} wat betekent "nul of één keer - of , of : " kan worden geschreven [-,:]? .