使用MySQL REGEX匹配电话号码中的重复数字

时间:2017-12-11 07:19:36

标签: php mysql regex

我之前有一个使用preg_replace的问题,但似乎无法使用MySQL REGEX功能实现此功能。基本上,我有一个电话号码数据库。例如:

8452100000

我希望能够像这样动态搜索电话号码:

2XX512YYYY

其中X和Y可以是任何数字,但每个数字代表相同数字的重复。到目前为止我试过这个,但是没有用。我可以使用PHP preg_match(),但不能使用MySQL REGEX()。你能看到我在这里做错了吗?

SELECT * FROM numbers WHERE number REGEXP '^2[[:digit:]]\1{1}512[[:digit:]]\2{4}'

1 个答案:

答案 0 :(得分:2)

\1\2不起作用,因为MySQL不支持对正则表达式中子组的反向引用。您需要明确可以匹配的内容,例如:

SELECT * FROM numbers WHERE number REGEXP '^2(00|11|22|33|44|55|66|77|88|99)512(0000|1111|2222|3333|4444|5555|6666|7777|8888|9999)'

这很笨重,但这是在MySQL实现与Perl兼容的正则表达式(PCRE)引擎之前的情况,除非您想安装扩展程序。