Python- how do I use re to match a whole string
本问题已经有最佳答案,请猛点这里访问。
我正在验证用户输入的文本,以便它仅接受字母,而不接受数字。 到目前为止,当我输入数字时(例如56),我的代码可以正常工作,它警告我只能输入字母,而当我输入字母时它不返回任何内容(就像它应该那样)。 我的问题是,当我开始输入字母后跟数字时,它会接受它。 (s45)。 它的作用是接受第一个字母,但不接受整个字符串。 我需要它来接受整个字符串。
1 2 3 4 5 | def letterCheck(aString): if len(aString) > 0: if re.match("[a-zA-Z]", aString) != None: return"" return"Enter letters only" |
将其固定到开头和结尾,并匹配一个或多个字符:
1 | if re.match("^[a-zA-Z]+$", aString): |
在这里
不过最好还是使用
1 2 3 4 5 6 | >>> 'foobar'.isalpha() True >>> 'foobar42'.isalpha() False >>> ''.isalpha() False |
使用正则表达式+原始字符串中的边界对正则表达式进行编码,如下所示:
1 | r"^[a-zA-Z]+$" |
您可能会考虑在字符串上使用isalpha()。 如果字符串仅包含字母字符,则返回true,否则返回false。
1 2 3 4 | if aString.isalpha(): do something else: handle input error |
如果您寻找漂亮的python文字,请使用isalpha和isdecimal:
1 2 | str = u"23443434"; print str.isdecimal(); |