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

2024-09-28 22:34:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在验证用户输入的文本,以便它只接受字母而不接受数字。到目前为止,当我输入一个数字(例如56)时,我的代码运行良好,它警告我只应键入字母,当我键入字母时,它不会返回任何内容(就像它应该做的那样)。我的问题是,当我先输入字母,然后输入数字(如s45)时,它就接受了。它只接受第一个字母,而不是整个字符串。我需要它来接受整个字符串。

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

Tags: 字符串用户文本警告内容键入returnif
3条回答

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

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

这里^锚定到字符串的开头,$锚定到字符串的结尾,并且+确保您匹配一个或多个字符。

不过,你最好还是用^{}代替。不需要在这里使用强大的正则表达式锤子:

>>> 'foobar'.isalpha()
True
>>> 'foobar42'.isalpha()
False
>>> ''.isalpha()
False

使用regex+原始字符串中的边界来对regex进行编码,如下所示:

r"^[a-zA-Z]+$"

您可以考虑对字符串使用isalpha()。如果字符串只包含字母字符,则返回true,否则返回false。

if aString.isalpha():
   do something
else:
   handle input error

相关问题 更多 >