近日在编写代码中碰到【可用于密码验证的连续相同数字判断的正则表达式如何写】这个问题,查阅了很多类似的文章,请教了一些老师,得到的答案似乎都不正确。经过多次验证,本人初步得出正确答案,欢迎大家指教讨论,谢谢交流。
问题1:连续5个相同数字,比如11111,22222
答案1:([0-9]\1{5})或([\d]\1{5})
原文:连续相同数字判断的正则表达式_SCscHero的博客-CSDN博客_正则表达式连续相同数字
import re
t = '111111'
res = re.match(r'^([0-9]\1{5})$',t)
print(res)
验证结论:错误

答案2:([\d]\1{5})
原文:连续相同数字判断的正则表达式_SCscHero的博客-CSDN博客_正则表达式连续相同数字
import re
t = '111111'
res = re.match(r'^([\d]\1{5})$',t)
print(res)
验证结果:错误

答案3:经过多次验证,本人得出的初步正确答案为:
import re
t = '111111'
res = re.match(r'^((\d)\2{5})$',t)
print(res)

问题2:密码规则:
总共是11位,第1位是1,第二位可以是数字3458其中之一,后面4位任意数字,最后5位为任意相同的数字。
例如:18601088888、13912366666则满足。
答案1:(1)([3458])(\d{4})((\d)\1{4})
import re
t = '18528322222'
res = re.match('^(1)([3458])(\d{4})((\d)\1{4})$',t)
print(res)
验证结果:错误

答案2:(1)([3458])(\d{4})((\d)\4{4})
import re
t = '18528322222'
res = re.match('^(1)([3458])(\d{4})((\d)\4{4})$',t)
print(res)
验证结果:错误

答案3:(1)([3458])(\d{4})((\d)\5{4})
import re
t = '18528322222'
res = re.match('^(1)([3458])(\d{4})((\d)\5{4})$',t)
print(res)
验证结果:错误

答案4:1[3458]\d{4}(\d)\1{4}
import re
t = '18528322222'
res = re.match('^1[3458]\d{4}(\d)\1{4}$',t)
print(res)
验证结果:错误

答案6:经过多次验证,本人得出的初步正确答案1为:
1[3458]\d{4}(\d)\1{4}
import re
t = '18528322222'
res = re.match(r'^1[3458]\d{4}(\d)\1{4}$',t)
print(res)

答案7:经过多次验证,本人得出的初步正确答案2为:
(1)([3458])(\d{4})((\d)\5{4})
import re
t = '18528322222'
res = re.match(r'^(1)([3458])(\d{4})((\d)\5{4})$',t)
print(res)

正确结果总是得之不易,不小心犯过的错,也留个纪念,时刻鞭策自己,做学问,一定要多学习,多实践!
在编程实践中遇到密码验证的问题,尤其是判断连续相同数字的正则表达式。通过研究多篇文章并进行验证,作者发现常见的答案并不准确。最终,作者提出了初步的正确解决方案,同时分享了错误的示例,强调了实践和学习的重要性。
2404

被折叠的 条评论
为什么被折叠?



