如何检查字符串仅包含“ a-z”,“ A-Z”和“ 0-9”字符

时间:2019-07-12 18:00:21

标签: python python-3.x

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

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

int c;

7 个答案:

答案 0 :(得分:6)

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

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

说明:

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

+表示匹配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")

答案 1 :(得分:3)

只需使用str.isalnum()

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

参考文档:

  

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

如果您不想检查str.isdigit()str.isnumeric(),而这些检查可能允许数字的小数点,只需使用str.isnumeric()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

答案 2 :(得分:1)

您必须分别比较传入文本的每个字母。

import string
text = input("Enter: ")
correct = string.ascii_letters + string.digits
status = True
for char in text:
    if char not in correct:
        status = False
if status:
    print('Correct')
else:
    print('InCorrect')

答案 3 :(得分:0)

您正在测试整个字符串是否在字符串'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

所以说输入为'testInput'

您正在检查'testInput'是否在字符串'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'中,而不是。

您需要单独检查每个字符

您可以使用易于使用的功能

import string
def validCharacters(text):
    correct = string.ascii_letters + string.digits
    for character in text:
         if character not in correct:
              return False

    return True

text = input("Enter: ")
if validCharacters(text):
     print("Correct")
else:
     print("Incorrect")

答案 4 :(得分:0)

我们可以删除所有不是A-Z,a-z或0-9的字符,然后检查剩余字符串的长度。如果大于0,则表示不是上述字符:

import re
text = input("Enter: ")
result = re.sub("[A-Za-z0-9]", '', text)
if len(result) == 0:
    print("Success")
else:
    print("Failure")

结果:

abcDEF123 -> Success
hello! -> Failure

答案 5 :(得分:0)

您可以通过多种方式来实现它,我将通过以下方式利用space_after

set

我只是检查由给定文本的字符组成的import string correct = {char for char in string.ascii_letters + string.digits} def is_correct(text): return {char for char in text}.issubset(correct) print(is_correct('letters123')) # True print(is_correct('???')) # False print(is_correct('\n')) # False 是否是所有合法字符的set的子集。请记住,这始终会处理整个文本,从性能的角度来看,这并不是最好的方法(因为您可能会在找到第一个非法字符后结束检查),但是除非您需要处理很长的文本或文本,否则应该没有问题。时间很少。

答案 6 :(得分:-1)

您可以使用正则表达式匹配来检查字符串是否仅包含字母和字母

 import re
 text = input("enter:")
 regex = r"([0-9a-zA-Z]+)"

 match = re.match(regex, string)

 if match != None:
    print("success")