【发布时间】:2018-02-05 19:32:37
【问题描述】:
为什么在字母数字类中不考虑“1A”?
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
【问题讨论】:
标签: regex oracle11g alphanumeric
为什么在字母数字类中不考虑“1A”?
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
【问题讨论】:
标签: regex oracle11g alphanumeric
一对未转义的[...] 创建一个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:]' 时,正则表达式引擎会将其解析为与括号表达式中定义的任何字符/字符范围匹配的正则括号表达式。 IE。 [:alnum:] 正则表达式匹配 :、a、l、n、u 或 m 的任何单个字符。由于您的输入具有a (1a),因此正则表达式引擎在输入中遇到a 时会返回有效匹配项。
【讨论】:
('1a', '[:alnum:]') 似乎可以接受。