我验证由用户输入的文本,使其只接受字母而不是数字。 到目前为止,我的代码工作正常,当我在一个编号(如56)型,它警告我说,我应该只键入字母,当我在字母键入它不返回任何东西(像它应该做的)。 我的问题是,它接受它,当我键入字母后跟数字如(S45)开始。 它的作用是接受的第一个字母而不是整个字符串。 我需要接受整个字符串。
def letterCheck(aString):
if len(aString) > 0:
if re.match("[a-zA-Z]", aString) != None:
return ""
return "Enter letters only"
它锚的开始和结束,并匹配一个或多个字符:
if re.match("^[a-zA-Z]+$", aString):
这里^
锚字符串的开始, $
到最后,和+
可以确保你1个或多个字符相匹配。
你会更好只使用str.isalpha()
虽然代替。 无需达到这里的大幅正则表达式锤:
>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False
使用您正则表达式+原始字符串边界编码正则表达式,如下所示:
r"^[a-zA-Z]+$"
你可能会考虑在字符串中使用因而isalpha()。 如果字符串包含什么,但字母,否则为false返回true。
if aString.isalpha():
do something
else:
handle input error
如果你看漂亮的Python的著作,去因而isalpha和isdecimal:
str = u"23443434";
print str.isdecimal();