我是regex的新手,正在寻找一个regex模式来检查匹配的字符串是否满足以下4个条件:
- 以单词"开头;用户">
- 以一组4位随机数结尾
- 除了@和%之外,字符串不应有任何特殊字符
- 匹配字符串中至少应有一个@符号和一个%符号
- 字符串的总长度应至少为20个字符
匹配模式示例:
userjoe@manhattan%1234用户%ryan%@nashville3354
我尝试使用以下代码,但它不起作用:
inputstr = "userjoe@manhattan%1234"
if re.match(r'^user.*%+.*@+.*d{4}$',inputstr):
print("True")
else:
print("False")
当特殊符号在字符串中的位置发生变化时(即@先出现,后跟%(,输出为false,而不是预期的True输出。此外,字符串长度检查验证在上述代码中丢失
我将使用以下正则表达式模式:
^user(?=.*@)(?=.*%)[A-Za-z0-9@%]{12,}[0-9]{4}$
Python脚本,使用re.search
:
inputstr = 'userjoe@manhattan%1234'
regex = r'^user(?=.*@)(?=.*%)[A-Za-z0-9@%]{12,}[0-9]{4}$'
if re.match(regex, inputstr):
print("True")
else:
print("False")
上面的正则表达式模式表示匹配:
^
user starts with 'user'
(?=.*@) assert that at least one @ appears
(?=.*%) assert that at least one % appears
[A-Za-z0-9@%]{12,} 12 or more alphanumeric, @, %, characters
[0-9]{4} ending in any 4 numbers
$