2017-05-27 58 views
0

在我的Django網站中,我允許使用字母數字和/或用戶名@_.+-。此外,空白區也是允許的。我寫了一個簡單的正則表達式來確保這一點:'^[\w\[email protected]+-]+$'無法通過正則表達式驗證的捕獲字符

這可能是一個明顯的問題,但我如何捕獲字符傳遞正則表達式驗證?我想在工具提示中向我的用戶顯示這些字符。

回答

1

您可以使用'[^...]'表示法來否定字符集'...'。下面給你一組的所有不需要的字符:

> name = 'abc%&/()45 -:' 
> set(re.findall(r'[^\w\[email protected]+-]', name)) 
set(['%', '&', ')', '(', '/', ':']) 
1

用方括號裏面的克拉(例如[^...])使得它的倒數。因此,例如,[A-Za-z0-9_]會匹配字母數字和下劃線,而[^A-Za-z0-9_]會匹配任何不是而是字母數字或下劃線。在你的情況下,你似乎想要的正則表達式是r'^[^\w\s\.\@\+\-]+$'