【问题标题】:'1A' is not accepted in [:alnum:] POSIX Character Class under Oracle regular expresssionOracle 正则表达式下 [:album:] POSIX 字符类不接受 '1A'
【发布时间】:2018-02-05 19:32:37
【问题描述】:

为什么在字母数字类中不考虑“1A”?

SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');

【问题讨论】:

    标签: regex oracle11g alphanumeric


    【解决方案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:]' 时,正则表达式引擎会将其解析为与括号表达式中定义的任何字符/字符范围匹配的正则括号表达式。 IE。 [:alnum:] 正则表达式匹配 :alnum 的任何单个字符。由于您的输入具有a (1a),因此正则表达式引擎在输入中遇到a 时会返回有效匹配项。

    【讨论】:

    • 好的,谢谢,能不能把使用它的理由也写在其他括号里。 ('1a', '[:alnum:]') 似乎可以接受。
    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-05-28
    • 2020-06-25
    相关资源
    最近更新 更多