正規表現は\を使用しません -を保護する ブラケット式 。 -を入力するだけです 最初の文字として、開き角かっこの直後:
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
興味があれば、 [\-,:]に遭遇したとき Oracleの理解: " \からの範囲内の任意の文字 、へ または文字: " 。これにより例外が発生する理由は、 \です。 後のようです 、コード> ASCII値に応じて。また、Oracleは範囲を受け入れません。 終了値の後に開始値があります。
一方:
IF REGEXP_LIKE('--,,::', '[-,:]*')
期待どおりに機能します。
補足として、
[-,:] {0,1} "-の0回または1回の出現を意味します または、 または: " [-,:]?と書くことができます 。