Regexp não usa
\
para proteger -
em uma expressão de colchetes . Você só precisa colocar -
como o primeiro caractere, logo após o colchete de abertura:IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Se você estiver curioso, ao encontrar
[\-,:]
Oracle entende:"qualquer caractere no intervalo de \
para ,
ou o caractere :
" . O motivo pelo qual isso gera uma exceção é \
parece estar depois ,
de acordo com seu valor ASCII. E a Oracle não aceita range tendo um valor inicial após o final. Por outro lado:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Funciona como esperado.
Como uma observação lateral,
[-,:]{0,1}
significando "zero ou uma ocorrência de -
ou ,
ou :
" poderia ser escrito [-,:]?
.