Python 3 正则表达式搜索重复字符功能不起作用

标签 python regex python-3.x validation

我有一个简短的函数,应该使用 python 3 中的正则表达式来验证 UID,限制是:

  1. 它必须正好有 10 个字符。
  2. 仅允许使用字母数字字符
  3. 任何字符不得重复

除了实际的字符重复之外,我已经完成了前面的所有步骤。

我尝试过使用 \1*,但我不知道它应该做什么,因为我对正则表达式和 python 不太熟悉。

import re

n = int(input())

for _ in range(n):
    UID = input()
    if re.match(r"(?:[a-zA-Z0-9]){10}$", UID):
        print("Valid")
    else:
        print("Invalid")

如果输入是:

2
B1CD102354
B1CDEF2354

它应该输出以下内容:

Invalid
Valid

因为B1CD1023541重复。

但是如果没有重复字符部分,它会输出:

Valid
Valid

最佳答案

试试这个^(?!.*(.).*\1)[a-zA-Z0-9]{10}$

https://regex101.com/r/XeaaTR/1

 ^ 
 (?!                       # No repeating chars
      .* 
      ( . )                     # (1)
      .* \1 
 )
 [a-zA-Z0-9]{10}           # 10 alnum's
 $

关于Python 3 正则表达式搜索重复字符功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997546/

相关文章:

python - 对数变换提亮暗区的颜色问题。为什么以及如何解决?

python - Pandas 保存时添加一个空列

python - 将数据帧行附加到列的向量方法,反之亦然

python - python 2.7中的字典

python - 将日期和时间转换为时间戳

java - 正则表达式匹配器 - 未找到匹配项

javascript - 正则表达式和换行减号

php - 常量和 mysql,最佳实践

python-3.x - 读取实时表 - Selenium

python - 我收到模数运算符的错误