这是我的代码看起来像......
if re.match('[a-z]',usrInput):
run onlyLetters function
elif re.match('[0-9]',usrInput):
run onlyNumbers function
elif re.match('[a-z0-9]',usrInput):
run lettersAndNums function
问题是,如果我输入'2394jsdkfjsdkm'
这样的文本,它将只读取字符,因为它满足if语句中的第一个条件。我真的希望像这样的输入是lettersAndNums。我如何更改代码?
答案 0 :(得分:3)
如果您只想查看字符串是否全部是数字,字母或字母数字:
if usrInput.isalpha():
# all letters
elif usrInput.isdigit():
# all numbers
elif usrInput.isalnum():
# all letters or numbers
请注意,这允许使用大写和小写字母;如果您只想要小写字母,请添加and usrInput.islower()
。
答案 1 :(得分:1)
您的代码仅检查第一个字符是否与模式匹配。如果您想确保 all 字符串中的字符与模式匹配,请使用[pattern]*$
,如下所示:
if re.match('[a-z]*$',usrInput):
run onlyLetters function
elif re.match('[0-9]*$',usrInput):
run onlyNumbers function
elif re.match('[a-z0-9]*$',usrInput):
run lettersAndNums function
这是因为*
表示“任意数量的字符”,而$
表示“字符串的结尾。”