我有一个简短的函数,应该使用 python 3 中的正则表达式来验证 UID,限制是:
- 它必须正好有 10 个字符。
- 仅允许使用字母数字字符
- 任何字符不得重复
除了实际的字符重复之外,我已经完成了前面的所有步骤。
我尝试过使用 \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
因为B1CD102354
有1
重复。
但是如果没有重复字符部分,它会输出:
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/