regex - [:alnum:] POSIX Character Class under Oracle regular expresssion 中不接受“1A”

标签 regex oracle11g alphanumeric

为什么在字母数字类中不考虑“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:]]')

enter image description here

查看online demo .

('1a', '[:alnum:]') seems to acceptable.

请注意,当您使用 '[:alnum:]' 时,正则表达式引擎会将其解析为与括号表达式内定义的任何字符/字符范围匹配的正则括号表达式。 IE。 [:alnum:] 正则表达式匹配 :al 中的任何单个字符>num。由于您的输入包含 a (1a),因此一旦在输入中遇到 a,正则表达式引擎就会返回有效的匹配项。

关于regex - [:alnum:] POSIX Character Class under Oracle regular expresssion 中不接受“1A”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920539/

相关文章:

mysql - mysql 字母数字排序

javascript - 在字节 00 处分割十六进制字符串的优雅方法?

regex - 为什么这个 "grep -P"没有达到我的预期?

sql - 优化sql更新语法而不是服务器

sql - Oracle SQL 中的字符串比较

sql - 如何在 oracle 中将 YYYYMMDD 转换为 DD-Mon-YYYY?

java - 两个字符串之间的子字符串选择

regex - 多个捕获组 - 全部可选

excel - Excel 中针对字母数字字母值的自定义数据验证

sql - Oracle:一个查询,它计算字符串中所有非字母数字字符的出现次数