gpt4 book ai didi

mysql - 从正则表达式收到错误 'repetition-operator operand invalid'(错误#1139)

转载 作者:行者123 更新时间:2023-11-29 20:24:32 26 4
gpt4 key购买 nike

我在数据库中有一列phone_number,其中一个条目可能包含多个电话号码。该计划是识别未通过正则表达式验证的条目。

这是我用来实现目标的查询:

 SELECT id, phone_number FROM store WHERE phone_number NOT REGEXP '^\s*\(?(020[78]?\)? ?[1-9][0-9]{2,3} ?[0-9]{4})|(0[1-8][0-9]{3}\)? ?[1-9][0-9]{2} ?[0-9]{3})\s*$';

问题是,每次运行代码时,都会收到错误:

错误代码:1139。从正则表达式中收到错误“重复运算符操作数无效”

提前致谢。

最佳答案

您使用的正则表达式至少有两个问题:1)转义应该加倍,2)有 2 个组用 | 分隔,使得 ^$ 分别应用于两个分支。

'^\s*\(?(020[78]?\)? ?[1-9][0-9]{2,3} ?[0-9]{4})|(0[1-8][0-9]{3}\)? ?[1-9][0-9]{2} ?[0-9]{3})\s*$'
^--------------------------------------^ ^------------------------------------------^

你可以使用

'^[[:space:]]*\\(?(020[78]?\\)? ?[1-9][0-9]{2,3} ?[0-9]{4}|0[1-8][0-9]{3}\\)? ?[1-9][0-9]{2} ?[0-9]{3})[[:space:]]*$'

分割:

  • ^ - 字符串开头
  • [[:space:]]* - 0+ 个空格
  • \\(? - 1 或 0 ( 个字符
  • (020[78]?\\)? ?[1-9][0-9]{2,3} ?[0-9]{4}|0[1-8][0-9]{3}\\)? ?[1-9][0-9]{2} ?[0-9]{3}) - 匹配 2 个替代项的替代组:
    • 020[78]?\\)? ?[1-9][0-9]{2,3} ?[0-9]{4} - 020 + 可选的 78 + 一个可选的 ) + 一个可选的空格 + 一个从 19 的数字 + 3 或 2 位数字 + 一个可选空格+4位数字
    • | - 或
    • 0[1-8][0-9]{3}\\)? ?[1-9][0-9]{2} ?[0-9]{3} - 0 + 一个从 18 + 3 位数字 + 可选的 ) + 可选的空格 + 从 19 的数字 + 2 位数字 +可选空格 + 3 位数字
  • [[:space:]]* - 0+ 个空格
  • $ - 字符串结尾

关于mysql - 从正则表达式收到错误 'repetition-operator operand invalid'(错误#1139),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39369092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com