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