Wyrażenie regularne nie używaj \
aby chronić -
w wyrażeniu w nawiasie . Musisz tylko umieścić -
jako pierwszy znak, zaraz po nawiasie otwierającym:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Jeśli jesteś ciekawy, kiedy napotykasz [\-,:]
Oracle rozumie:"dowolny znak z zakresu od \
do ,
lub znak :
. Powodem, dla którego powoduje to wyjątek, jest \
wydaje się być po ,
zgodnie z ich wartością ASCII. A Oracle nie akceptuje zakresu mający wartość początkową po końcowej.
Z drugiej strony:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Działa zgodnie z oczekiwaniami.
Na marginesie,
[-,:]{0,1}
co oznacza "zero lub jedno wystąpienie -
lub ,
lub :
można zapisać [-,:]?
.