Python正则表达式匹配一个模式,该模式以单词开头,以4位数字结尾,除@和%外不包含任何特殊字符,并且至少有10个字符



我是regex的新手,正在寻找一个regex模式来检查匹配的字符串是否满足以下4个条件:

  1. 以单词"开头;用户">
  2. 以一组4位随机数结尾
  3. 除了@和%之外,字符串不应有任何特殊字符
  4. 匹配字符串中至少应有一个@符号和一个%符号
  5. 字符串的总长度应至少为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
$

最新更新