簡體   English   中英

在Python 3中使用正則表達式進行驗證和評分

[英]Validation and scoring using regex in Python 3

好的,所以我嘗試在python 3中使用正則表達式檢查字符串,如果字符串具有大寫字母,則單詞得分5;如果字符串具有上,下位,則得分為10等。 5,但如果是AAAAAAAAAa,它仍然只得分5。

def word_strength(entered_string):
    wordtrenthscore = 0
    contains_upper ="[A-Z]+"
    validString = re.match(contains_upper, entered_string)
    if validString:
        stringscore += 5


    contains_lower ="[a-z]+"
    validString = re.match(contains_lower, entered_string)
    if validString:
        stringscore += 5

代替

stringscore = +5

你要

stringscore += 5

同樣,如果pattern在字符串的開頭,則re.match()僅返回正值! re.match()更改為re.search()

您是否嘗試過使用“ ^ [AZ] + $”和“ ^ [az] + $”來檢查整個字符串是大寫還是小寫?

“ AAAAAAAAAa”字符串確實與您的初始正則表達式“ [AZ] +”相匹配,因為它找到'A'的次數為零次或多次(恰好為9次),但之后的a不匹配。 如果通過添加“ $”將正則表達式強制到行尾,則它應該可以工作。 “ aAAAAAAAAA”也會發生相同的問題,因此也需要行“ ^”的開頭。

所以:

if re.match("^[A-Z]+$", entered_string):
    stringscore += 5
elif re.match("^[a-z]+$", entered_string):
    stringscore += 5
elif re.match('^[A-Za-z]+$', entered_string):
    stringscore += 10

這是明確的,不會混合不同的if分支。

暫無
暫無

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

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