MySQL正则表达式计数用户名(字符串)中有多少位数?

时间:2016-09-15 00:18:15

标签: php mysql

我需要一个MySQL正则表达式来计算用户用户名中的位数。

即。如果需要选择7个以上的数字。

我尝试了以下表达式,但它给了我错误

SELECT * FROM `user` WHERE `name` REGEXP '^\D*(?:\d\D*){7,}$' 

我得到的错误是

#1139 - 来自正则表达式的错误'重复 - 运算符操作数无效'

1 个答案:

答案 0 :(得分:1)

您使用的是\d\D以及(?:)语法,但MySQL不支持这些扩展的正则表达式元字符。

  

如果它有超过7个数字,则需要选择它。

所以我猜你可以假设用户名是有效的,即你不需要检查它是否以非数字开头。并且您可以接受具有超过7位数字以及至少7位数的用户名。我也假设数字不需要在一起,只需要有7个。

这是一个有效的正则表达式:

SELECT * FROM `user` WHERE `name` REGEXP '([[:digit:]].*){7}';