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

Elş*_*zım 1 python regex python-3.x

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

但是我只能输入,输入字母和数字时不会打印成功

import string
text=input("Enter: ")
correct = string.ascii_letters + string.digits
if text in correct:
    print("Success")
Run Code Online (Sandbox Code Playgroud)

vs9*_*s97 7

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

import re
pattern = re.compile("[A-Za-z0-9]+")
pattern.fullmatch(string)
Run Code Online (Sandbox Code Playgroud)

说明:

[A-Za-z0-9] 匹配AZ,az和0-9范围内的字符,因此匹配字母和数字。

+ 表示匹配一个或多个先前的令牌。

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")
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要的话,你也可以使用 `pattern = re.compile("[a-z0-9]", re.I)` ... [(`re.I` 是 `re.IGNORECASE` 的缩写。)]( https://docs.python.org/3.4/library/re.html#re.I)但这与已经存在的内容相同。 (2认同)

Jab*_*Jab 7

只需使用 str.isalnum()

>>> '123AbC'.isalnum()
True
>>> '1&A'.isalnum()
False
Run Code Online (Sandbox Code Playgroud)

参考文档:

如果字符串中的所有字符都是字母数字并且至少有一个字符,则返回 true,否则返回 false。c如果以下之一返回,则字符是字母数字字符True:、 、 或。c.isalpha()c.isdecimal()c.isdigit()c.isnumeric()

如果您不希望str.isdigit()或被str.isnumeric()检查这可能允许数字中的小数点,请使用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
Run Code Online (Sandbox Code Playgroud)