如何检查字符串是否仅包含“az”、“AZ”和“0-9”字符

新手上路,请多包涵

我正在导入字符串并尝试检查文本是否仅包含“az”、“AZ”和“0-9”。

但是我只得到输入,当我输入字母和数字时它不会打印成功

import string
text=input("Enter: ")
correct = string.ascii_letters + string.digits
if text in correct:
    print("Success")

原文由 Elşən Kazım 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以为此使用正则表达式,例如根据以下模式检查字符串:

 import re
pattern = re.compile("[A-Za-z0-9]+")
pattern.fullmatch(string)

解释:

[A-Za-z0-9] 匹配AZ、az和0-9范围内的一个字符,so字母和数字。

+ 表示匹配 1 个或多个前面的标记。

re.fullmatch() 方法允许检查整个字符串是否与正则表达式模式匹配。如果找到匹配项,则返回相应的匹配对象,否则如果字符串与模式不匹配,则返回 None

全部一起:

 import re

if __name__ == '__main__':
    string = "YourString123"
    pattern = re.compile("[A-Za-z0-9]+")

    # if found match (entire string matches pattern)
    if pattern.fullmatch(string) is not None:
        print("Found match: " + string)
    else:
        # if not found match
        print("No match")

原文由 vs97 发布,翻译遵循 CC BY-SA 4.0 许可协议

只需使用 str.isalnum()

 >>> '123AbC'.isalnum()
True
>>> '1&A'.isalnum()
False

参考文档:

如果字符串中的所有字符都是字母数字并且至少有一个字符,则返回 true,否则返回 false。 A character c is alphanumeric if one of the following returns True : c.isalpha() , c.isdecimal() , c.isdigit() , or c.isnumeric()

If you don’t want str.isdigit() or str.isnumeric() to be checked which may allow for decimal points in digits just use str.isnumeric() and str.isalpha() :

 >>> all(c.isnumeric() or c.isalpha() for c in '123AbC')
True
>>> all(c.isnumeric() or c.isalpha() for c in '1&A')
False

原文由 Jab 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏