为什么在字母数字类中不考虑“1A”?
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
最佳答案
一对未转义的 [...]
创建一个 bracket expression 。 POSIX 字符类,如 [:alpha:]
、[:alnum:]
,只能在括号表达式内声明。
[:digit:]
is a POSIX character class, used inside a bracket expression like[x-z[:digit:]]
.
在括号表达式内使用 POSIX 字符类:
SELECT 'yes' FROM dual WHERE REGEXP_LIKE('1A', '[[:alnum:]]')
查看online demo .
('1a', '[:alnum:]')
seems to acceptable.
请注意,当您使用 '[:alnum:]'
时,正则表达式引擎会将其解析为与括号表达式内定义的任何字符/字符范围匹配的正则括号表达式。 IE。 [:alnum:]
正则表达式匹配 :
、a
、l
、 中的任何单个字符>n
、u
或 m
。由于您的输入包含 a
(1a
),因此一旦在输入中遇到 a
,正则表达式引擎就会返回有效的匹配项。
关于regex - [:alnum:] POSIX Character Class under Oracle regular expresssion 中不接受“1A”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920539/