簡體   English   中英

如何檢查字符串是否嚴格包含字母和數字

[英]How to check if a string is strictly contains both letters and numbers

如何檢查字符串是否嚴格包含字母和數字?

跟隨還不夠?

def containsLettersAndNumber(input):
    if input.isalnum():
        return True
    else:
        return False


isAlnum = containsLettersAndNumber('abc')           # Should return false
isAlnum = containsLettersAndNumber('123')           # Should return false
isAlnum = containsLettersAndNumber('abc123')        # Should return true
isAlnum = containsLettersAndNumber('abc123$#')      # Should return true

請注意,它必須同時包含字母和數字

您可以循環並跟蹤您是否找到了一個字母以及是否找到了一個數字:

def containsLetterAndNumber(input):
    has_letter = False
    has_number = False
    for x in input:
        if x.isalpha():
            has_letter = True
        elif x.isnumeric():
            has_number = True
        if has_letter and has_number:
            return True
    return False

或者,一種更pythonic但速度較慢的方式:

def containsLetterAndNumber(input):
    return any(x.isalpha() for x in input) and any(x.isnumeric() for x in input)

僅使用字符串方法的最簡單方法:

def containsLetterAndNumber(input):
    return input.isalnum() and not input.isalpha() and not input.isdigit()

input.isalnum返回true,當且僅當S中的所有字符是字母數字, input.isalpha返回false如果輸入包含非字母字符,並input.isdigit返回false,如果輸入包含任何非數字字符

因此,如果input包含任何非字母數字字符,則第一次檢查為假。 如果not input.isalpha()那么我們知道input至少包含一個非字母字符——它必須是一個數字,因為我們已經檢查了input.isalnum() 同樣,如果not input.isdigit()不是 True 則我們知道input至少包含一個非數字字符,該字符必須是字母字符。

您還可以使用正則表達式 bool(re.match('^[a-zA-Z0-9]+$', 'string'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM