Редовните изрази не използват \ за защита на - в израз в скоби . Трябва само да поставите - като първи знак, точно след отварящата скоба:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Ако сте любопитни, когато срещнете [\-,:] Oracle разбира:"всеки знак в диапазона от \ до , или знакът : " . Причината, поради която това предизвиква изключение, е \ изглежда е след , според тяхната ASCII стойност. И Oracle не приема обхват с начална стойност след крайната.
От друга страна:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Работи според очакванията.
Като странична бележка,
[-,:]{0,1} което означава "нула или едно срещане на - или , или : " може да бъде написано [-,:]? .