我想檢查密碼是否包含特殊字符。我搜索了幾個例子,但無法找到解決我的問題。我該怎麼做?這是我迄今爲止的嘗試方式;檢查字符串是否包含python中的特殊字符
elif not re.match("^[[email protected]#$%^&*()_+{}":;']+$",password)
print "Invalid entry."
continue
我的字符串是密碼。
我想檢查密碼是否包含特殊字符。我搜索了幾個例子,但無法找到解決我的問題。我該怎麼做?這是我迄今爲止的嘗試方式;檢查字符串是否包含python中的特殊字符
elif not re.match("^[[email protected]#$%^&*()_+{}":;']+$",password)
print "Invalid entry."
continue
我的字符串是密碼。
你不需要這個正則表達式。請嘗試:
elif set('[[email protected]#$%^&*()_+{}":;\']+$').intersection(password):
print "Invalid entry."
引號已在字符串中轉義。它的作用是創建一個包含所有無效字符的集合,然後將其與password
(換句話說,包含集合和密碼字符串中存在的所有唯一字符的集合)相交。如果沒有匹配,則結果集將爲空,因此評估爲False
,否則將評估爲True
並打印該消息。
特殊字符字符串中的幾個符號在正則表達式中有特殊含義,必須轉義。你會得到語法錯誤,因爲你在包含"
的字符串的中間用雙引號描述,所以Python完成處理字符串,然後扼殺它後來看到的垃圾。試試這個:
elif not re.match(r"[~\[email protected]#\$%\^&\*\(\)_\+{}\":;'\[\]]", password):
print "Invalid entry"
continue
我用了一個原始字符串,你應該總是在正則表達式中使用。我逃過了需要轉義的字符,並且簡化了一下表達式,因爲字符串標記的起始^
和結尾$
不是必需的 - 只要匹配成功,它就會返回True,並且會跳過以下內容碼。
當有疑問時,逃生:)
而你沒有得到一個語法錯誤? – MattDMo 2014-09-30 21:45:19
我得到一個 – 2014-09-30 21:45:36