Regexp nepoužívejte \ k ochraně - ve výrazu v závorce . Stačí zadat - jako první znak, hned za úvodní závorkou:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Pokud jste zvědaví, při setkání s [\-,:] Oracle rozumí:„jakýkoli znak v rozsahu od \ na , nebo znak : " . Důvod, proč to vyvolává výjimku, je \ se zdá být po , podle jejich hodnoty ASCII. A Oracle nepřijímá rozsah mající počáteční hodnotu za koncovou.
Na druhou stranu:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Funguje podle očekávání.
Jako okrajová poznámka,
[-,:]{0,1} což znamená "nula nebo jeden výskyt - nebo , nebo : " mohl být zapsán [-,:]? .