正则 表达式 不要在方 括号表达式中 使用\
保护。您只需将第一个字符放在开头的括号之后:-
__-
IF REGEXP_LIKE('--,,::', '[\-,:]*')
...
=> ORA-12728: invalid range in regular expression
如果您很好奇,在遇到[\-,:]
Oracle时请理解:“范围从\
到,
或字符之间的任何字符:
”。为什么这引发了一个异常的原因是\
似乎是 后,
根据自己的ASCII值。而且Oracle不接受在结束值之后具有起始值的 范围 。
另一方面:
IF REGEXP_LIKE('--,,::', '[-,:]*')
可以正常工作。
作为一个侧面说明,[-,:]{0,1}
意为 _“零或一发生-
或,
或:
”_可以写[-,:]?
。