如何判断手机号中是否有连续数字(顺子)?

龙逸凡
龙逸凡

WPS产品体验官

添加图片注释,不超过 140 字(可选)

需求

现在要编制一个公式,判断手机号中是否包含连续数字(顺子),含正序或倒序

添加图片注释,不超过 140 字(可选)

注意:

手机号之间并没有空格,为了方便查看,上图用自定义格式显示为每4位一组。

添加图片注释,不超过 140 字(可选)

正序的连续数字

在以前的文章:

5句话,让你的正则表达式水平突飞猛进!(第3-5句)

中介绍过,(?=XX)的意思是“右边是XX”

比如,我们要匹配“2左边的1”【1的右边是2】,正则表达式这样写:

1(?=2)

用它可匹配数字“13156127”中的第3个1。

添加图片注释,不超过 140 字(可选)

同理,我们要匹配到顺子,需要符合以下正则:

2(?=3)

或者

3(?=4)

或者

……

8(?=9)

我们知道,在正则表达式中用竖线“|”表示“或”的意思,所以用“|”将上面的正则拼接起来:

"1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)"

试一下看看匹配的效果

添加图片注释,不超过 140 字(可选)

可以看到,他成功的匹配了5和1

添加图片注释,不超过 140 字(可选)

but,我不只是要匹配5和1,而是要匹配56和12啊

简单!

咱们再完善一下:

先用一个括号,将上面的正则括起来,表明这是一个整体。

然后在这个整体后面加一个\d,将后面的数字也匹配上。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

完美!

添加图片注释,不超过 140 字(可选)

继续完善

输入几个不同的数据测试一下

添加图片注释,不超过 140 字(可选)

存在以下问题

01没做为顺序数字

234567分成两个一组

第1个问题的解决方案:加一个0(?=1)

第2个问题的解决方案:需要设置数量为{2,}

完整的正则公式为:

=REGEXP(B3,"(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2,}\d")

添加图片注释,不超过 140 字(可选)

注意:

连续数字(顺子)是要求是3个以上的数字。这里的数量为什么不是用{3,}【3个以上】,而是用{2,}【2个以上】。

因为正则“0(?=1)”的意思是0右边是1,已经隐含要求有两个数字了。

(0(?=1)|1(?=2)|……){2,}相当于已经要求是3个以上的数字。

添加图片注释,不超过 140 字(可选)

倒序的连续数字

上面介绍的是如何匹配顺序的连续数字,那要求匹配倒序的连续数字的正则表达式,就很容易写出来了

公式:

=REGEXP(B3,"((9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,})\d")

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

同时匹配顺序、倒序的连续数字

公式:

=REGEXP(B4,"((0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2,}|(9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,})\d")

添加图片注释,不超过 140 字(可选)

如果使用上面的公式,当手机号中既没有顺序的连续数字,也没有倒序的连续数字时会出错。

得加入容错机制:当没有连续数字时显示为空

具体的解决方案及知识点,

详见收以前的文章:

从一个案例看正则表达式的优化技巧②:如何避免出错

从一个案例看正则表达式的优化技巧③:如何避免出错【补充】

最终,完整的公式:

=REGEXP(B4,".+?\K((0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){2,}|(9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,})\d|^")

添加图片注释,不超过 140 字(可选)

本文收录于正则表达式合集,欢迎订阅,免费的

重庆
浏览 377
1
3
分享
3 +1
2
1 +1
全部评论 2
 
懒得批爆
懒得批爆

WPS产品体验官

注重细节,提高品质。 配图是Excel的技术,而REGEXP是WPS专用函数,Excel无法使用的。 请修改正文 1、修改配图以及引流公众号的帖子中Excel为WPS 2、修改函数的使用,Excel中的正则函数应该为【REGEXEXTRACT】和【REGEXREPLACE】 图不配文就不要引流了
· 四川省
回复
龙逸凡
龙逸凡

WPS产品体验官

· 重庆
回复