生成字符串,条件:1 指定长度,2 8-32位数字、英文字母大小写或特殊符号(至少包含3种)
# test.py
import random
import re
from string import ascii_letters, digits
def gen_str(length):
"""
生成字符串,条件:1 指定长度,2 8-32位数字、英文字母大小写或特殊符号(至少包含3种)
"""yp
allowed_chars = ascii_letters + digits + r"_!/@#$%^&`~()\-+="
str_res = ""
flag = True
while flag:
temp = [random.SystemRandom().choice(allowed_chars) for i in range(length)]
str_res = "".join(temp)
check_reg = r'^(?![a-zA-Z0-9]+$)(?![A-Z0-9_!/@#$%^&`~()\\\-+=]+$)(?![a-zA-Z_!/@#$%^&`~()\\\-+=]+$)(?![a-z0-9_!/@#$%^&`~()\\\-+=]+$)[a-zA-Z0-9_!/@#$%^&`~()\\\-+=]{8,32}$'
flag = True if not re.match(check_reg, str_res) else False
return str_res
str_abc = gen_str(10)
print(str_abc)
"""
运行结果:
[root@Chasing-Dreams ~]# python test.py
9@4n+bMtz^
"""