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