一尘不染

Python-如何使用re匹配整个字符串

python

我正在验证用户输入的文本,以便它仅接受字母,而不接受数字。到目前为止,当我输入数字(例如56)时,我的代码可以正常工作,它警告我只能输入字母,而当我输入字母时,它不会返回任何内容(就像它应该那样)。我的问题是,当我开始输入字母后跟数字时,它会接受它,例如(s45)。它的作用是接受第一个字母,但不接受整个字符串。我需要它来接受整个字符串。

def letterCheck(aString):
    if len(aString) > 0:
        if re.match("[a-zA-Z]", aString) != None:
            return ""
    return "Enter letters only"

阅读 181

收藏
2020-12-20

共1个答案

一尘不染

将其固定到开头和结尾,并匹配 一个或多个 字符:

if re.match("^[a-zA-Z]+$", aString):

此处^将锚定到字符串的开头和$结尾,并+确保您匹配1个或多个字符。

不过最好还是str.isalpha()改用。无需在这里拿起沉重的正则表达式锤子:

>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False
2020-12-20