Python 如何验证字符串以检查其是否遵循此格式?

Python 如何验证字符串以检查其是否遵循此格式?,python,regex,string,formatting,Python,Regex,String,Formatting,我想检查存储在变量Username中的字符串是否以以下格式存储: “a.bcde”或“12a.bcde” 在句号之前,可以有一个字母或两个数字和一个字母 在句号之后,只能有字母 有效字符串:“a.bcdefghi”、“45z.yxwu” 无效字符串:“1a.bcdef”、“12a.bcde@” 我已经编写了以下代码 if bool(re.match("..[a-z][.][a-z]+", Username))==True: return True else:

我想检查存储在变量Username中的字符串是否以以下格式存储:

“a.bcde”或“12a.bcde”

在句号之前,可以有一个字母或两个数字和一个字母

在句号之后,只能有字母

有效字符串:“a.bcdefghi”、“45z.yxwu”

无效字符串:“1a.bcdef”、“12a.bcde@”

我已经编写了以下代码

if bool(re.match("..[a-z][.][a-z]+", Username))==True:
      return True
else:
      return False
但是,对于“a.bcde”,它返回False;对于“12a”,它返回True。bcde@fgh.com“

您可以使用

^(?:\d{2})?[a-z][.][a-z]+$
  • ^
    字符串的开头
  • (?:\d{2})
    可以选择匹配两位数字
  • [a-z][.]
    匹配单个字符a-z和
  • [a-z]+
    匹配1+字符a-z
  • $
    字符串结尾
|[Python演示(https://ideone.com/k2Hk81)]

比如说

import re

pattern = r"(?:\d{2})?[a-z][.][a-z]+$"
strings = [
    "a.bcde",
    "12a.bcde",
    "a.bcdefghi",
    "45z.yxwu",
    "1a.bcdef",
    "12a.bcde@"
]

for s in strings:
    m = re.match(pattern, s)
    if m:
        print("Match for {0}".format(m.group()))
输出

Match for a.bcde
Match for 12a.bcde
Match for a.bcdefghi
Match for 45z.yxwu