【问题标题】:Oracle regex expression sorting out special characters and Czech charactersOracle 正则表达式排序特殊字符和捷克字符
【发布时间】:2013-04-26 20:30:48
【问题描述】:

由于与银行的接口,我需要从名称字段中整理出一些不需要的字符:

这是允许的范围: 0 - 9, a - z, A - Z, / - ? ( ) 。 , ' +(空格)——但不允许使用捷克语字符

我已经尝试过这样的事情在几个时期得到了不必要的点击。和空格,但没有达到 100%:

SELECT CASE
          WHEN  REGEXP_LIKE (name,
                            '^([0-9a-zA-Z]* *+(|_|\-|\.))')
          THEN
             'true'
          ELSE
             'false'
       END AS tmp, avt.*
  FROM amcbankvendtable avt

此外,我还没有删除捷克字符。我知道参数字符类==a== 给出ä,但在这种情况下我想要相反,不允许ûü,而只允许u。 (基本上只允许英文字母)。

所以:

  • 123456abc没问题

  • 123û 不行

  • 123#& 不行(#& 不允许字符)

有什么想法吗?

【问题讨论】:

    标签: regex oracle character special-characters


    【解决方案1】:

    您可以使用如下表达式:

    [^0-9a-zA-Z/?().,' +-]
    

    如果匹配,则存在不允许的内容。

    【讨论】:

    • false InteleSMS AS false Protego AS true Moraviapress a.s.真正的 AB Facility a.s.越来越接近。 WHEN REGEXP_LIKE (name, '[^0-9a-zA-Z/?().,+-] ') 为什么在最后两次出现时为真,是因为两个句点:.
    • @Trond - 因为 Qtax 忘记在括号内添加空格字符。
    • 但是撇号,我如何让它工作:[^0-9a-zA-Z/?()。 ,''+-],我尝试引用两次''并转义它,但没有得到任何点击。
    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    相关资源
    最近更新 更多