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