语法错误或访问冲突:1139从regexp得到错误“空(子)表达式”

时间:2019-01-31 17:52:06

标签: php mysql regex

我有这个正则表达式:

REGEXP '(^0+|0+)17198671(0+|$)$'

需要匹配这样的字符串

US00171986710
00171986710000000000000
001719867100000000

基本上我需要的是,如果字符串中包含所有相同的数字,则替换零并以零或零结尾,我想匹配它们。我不明白为什么这个有效的正则表达式不适用于MySQL

1 个答案:

答案 0 :(得分:1)

MySQL正则表达式引擎不允许使用空的替代项,例如ab(c|)a|中的替代项。 (0+|$)部分与1+零或输入字符串末尾的空字符串匹配,这会导致错误。

请注意,(^0+|0+)意味着一个或多个零不必出现在字符串的开头,因此,您所需要的就是

REGEXP '0+171986710*$'

详细信息

  • 0+-一个或多个0
  • 17198671-文字子字符串
  • 0*-零个或多个0
  • $-字符串的结尾。