【问题标题】:RegExp Issue in MySQL StatementMySQL 语句中的 RegExp 问题
【发布时间】:2018-12-10 14:35:21
【问题描述】:

我在 mySQL 中有以下 RegExp:

WHERE telephone NOT REGEXP'(^[+][0-9]+\ )?([0-9]{3}\-[0-9]{3}\-[0-9]{4})(\ x[0-9]+$)?'

这应该选择不是+0 000-000-0000 x000 格式的所有电话号码。它工作得几乎完美,除了我有一个客户在电话字段中输入000-000-0000</span> 并且这个表达式找不到它。我知道我已将它设置为接受可选扩展名,但如何确保可选扩展名的格式正确?

【问题讨论】:

  • 如果将(\ x[0-9]+$)? 更改为(\ x[0-9]+)?$ 会怎样?您可能还想将(^[+][0-9]+\ )? 更改为^([+][0-9]+\ )?
  • 清除</span>(等)的数据存储到表中。
  • @rick LOL 这就是我编写函数的全部原因。我要清理掉人们投入的所有垃圾,以后不允许发生类似的事情。

标签: mysql regex


【解决方案1】:

为你所拥有的添加一个结束锚:

^([+][0-9]+\ )?([0-9]{3}\-[0-9]{3}\-[0-9]{4})(\ x[0-9]+)?$

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多