Regexp jangan gunakan \ untuk melindungi - dalam ekspresi tanda kurung . Anda hanya perlu memasukkan - sebagai karakter pertama, tepat setelah tanda kurung buka:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
Jika Anda penasaran, ketika menemukan [\-,:] Oracle mengerti:"karakter apapun dalam rentang dari \ ke , atau karakter : " . Alasan mengapa ini menimbulkan pengecualian adalah \ tampaknya setelah , sesuai dengan nilai ASCII mereka. Dan Oracle tidak menerima rentang memiliki nilai awal setelah nilai akhir.
Sebaliknya:
IF REGEXP_LIKE('--,,::', '[-,:]*')
Bekerja seperti yang diharapkan.
Sebagai catatan tambahan,
[-,:]{0,1} artinya "nol atau satu kemunculan - atau , atau : " bisa ditulis [-,:]? .