为什么不在字母数字类中考虑'1A'?
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
答案 0 :(得分:1)
一对未转义的[...]
创建bracket expression。 POSIX字符类(如[:alpha:]
,[:alnum:]
)只能在括号表达式中声明。
[:digit:]
是一个POSIX字符类,在括号表达式[x-z[:digit:]]
中使用。
在括号表达式中使用POSIX字符类:
SELECT 'yes' FROM dual WHERE REGEXP_LIKE('1A', '[[:alnum:]]')
查看online demo。
('1a', '[:alnum:]')
似乎可以接受。
请注意,当您使用'[:alnum:]'
时,正则表达式引擎会将其解析为与括号表达式中定义的任何字符/字符范围匹配的常规括号表达式。即[:alnum:]
正则表达式匹配任何:
,a
,l
,n
,u
或m
的单个字符。由于您的输入为a
(1a
),因此正则表达式引擎会在输入中遇到a
时返回有效匹配。