【问题标题】:Regex: a character should not come consecutively not more than 3 times正则表达式:一个字符不应连续出现不超过 3 次
【发布时间】:2018-06-16 05:29:18
【问题描述】:

在正则表达式(python3)中,我输入了 16 位数字。

我需要检查号码,以确保没有 4 个连续的数字相同

1234567890111234 ------>有效
1234555567891234 ------>无效

【问题讨论】:

  • 哪种编程语言?

标签: regex python-3.x


【解决方案1】:

您可以在匹配连续4个相同字母的字符串中搜索模式(.)\1{3},如果re.search返回None,它是一个有效的字符串:

import re

lst = ['12345678901112', '12345555678912']
for x in lst:
    print(x)
    print('Valid: ', re.search(r'(.)\1{3}', x) is None)

#12345678901112
#Valid:  True
#12345555678912
#Valid:  False

这里(.)匹配一个普通的单个字符,并将其捕获为组1,我们可以稍后参考后面的字符与反向引用\1匹配,并进一步确保三个相同的字符,使用量词@ 987654326@\1。这样可以确保匹配的 4 个字符相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多