网友求助SOS:如何将密码中至少4个连续相同数字的用户筛选出来?
A1:B7区域为数据源。A列为用户名,B列为密码。要求在D列筛选出不合格密码的用户,出现至少连续4个一样数字的为不合格的密码。例如密码“71170000”中有4个连续的0,所以为不合格密码,它所对应的用户名为“C”。

我们使用两大函数利器:REGEXP函数与FILTER函数,双剑合璧,快刀斩乱麻,快速解决问题。
第一步:判断数字是否至少4个连续重复
使用REGEXP正则表达式函数:
=REGEXP(B2:B7,".")
.:匹配任意单个字符。
我们想象的应该是会返回B2:B7区域每个单元格全部可能的任意单个字符。
例如:
B2="81222283" 返回 {"8","1","2","2","2","2","8","3"}
B3="11121314" 返回 {"1","1","1","2","1","3","1","4"}
但实际上:
REGEXP函数对B2:B7区域中每个单元格独立处理,但仅返回每个单元格的第一个匹配结果,其余的会视觉省略掉。也就是说REGEXP第一参数若是对区域进行处理,默认采用 “单匹配优先” 逻辑,避免多维数组混乱。
例如 B2="81222283" 返回 "8",B3="11121314" 返回 "1"
此特点是 Excel/WPS 的函数设计特性,与正则表达式语法无关。其实作用一样,只是视觉输出不同。
继续完善正则表达式:
=REGEXP(B2:B7,"(.)")
( ):捕获组,将匹配的字符保存起来,以便后续引用。
作用:匹配并“记住”密码中的任意一个字符(如第一个字符)。
继续完善正则表达式:
=REGEXP(B2:B7,"(.)\1{3}")
\1:反向引用,表示引用第一个捕获组,即 (.) 匹配到的字符。
作用:确保下一个字符与第一个字符相同。例如,如果第一个字符是"2",则\1要求下一个字符也是"2"。
{3}:量词,表示前面的元素,即\1 必须连续出现3次。
作用:结合\1,表示“相同的字符再重复3次”。所以\1{3}等同于“相同字符连续出现3次”。
(.)\1{3} 组合效果:
匹配一个字符后跟着相同字符连续3次,总连续4个相同字符。
例如:
匹配"2222"(4个2)、"0000"(4个0)等。
在密码"81222283"中,它会匹配到"2222"部分。
继续完善公式:
=REGEXP(B2:B7,"(.)\1{3}",1)
REGEXP函数省略第3参数默认的是“提取”模式,将第3参数修改为“1”,REGEXP函数由默认的“提取”模式转换为了“判断”模式。
即密码有连续4位相同时,返回逻辑值TRUE,否则返回逻辑值FALSE。
第二步:筛选符合条件的用户
运用FILTER筛选函数:
=FILTER(A2:A7,REGEXP(B2:B7,"(.)\1{3}",1))
Excel的FILTER函数,用于根据条件筛选数据。
生成FILTER函数所需的“筛选条件”数组:
如果密码不合格(如"81222283"中的"2222"),对应位置为TRUE,FILTER会保留该用户名。
如果密码合格(如"11121314"只有连续3个"1"),对应位置为FALSE,FILTER会忽略该用户名。