我只希望我的用戶名有字母,數字和下劃線。沒有其他符號,空格或其他任何東西。如何在Python中編寫正則表達式函數來檢查用戶是否只有字母和數字?
如何寫一個正則表達式來檢查它是否只有字母/數字/下劃線?
我只希望我的用戶名有字母,數字和下劃線。沒有其他符號,空格或其他任何東西。如何在Python中編寫正則表達式函數來檢查用戶是否只有字母和數字?
如何寫一個正則表達式來檢查它是否只有字母/數字/下劃線?
>>> re.match('^\w+$', '4tg25g_3yg')
<_sre.SRE_Match object at 0x7f8093f198b8>
+1最短正則表達式 – 2011-02-08 23:25:51
基本上是:
import re
regex = re.compile("^[a-zA-Z0-9_]+$")
if regex.match(some_string):
do_something()
`A-Z`有一種黴味舊的代碼味道,甚至可能是瀕臨死亡的味道。 – tchrist 2011-02-09 12:10:04
"^[a-zA-Z0-9_]+$"
或
"^[\w_]+$"
順便說一句,`_`在第二個中是多餘的。 `\ w`已經將它包含在python中(真正的任何正常的正則表達式引擎)。 – eldarerathis 2011-02-08 23:50:46
那些不相同。此外,**任何具有文字「A-Z」或「a-z」的模式在某些情況下實際上總是錯誤的。**它具有代碼異味。出於許多原因,`\ w`非常好,因爲如果它符合[UTS#18](http://unicode.org/reports/tr18/#Compatibility_Properties),它會將任何代碼點與字母,標記,十進制數字或連接符標點屬性。 – tchrist 2011-02-09 12:08:16
像這樣的東西應該工作
import re
if re.match("^[A-Za-z0-9_]*$", user_string):
# do something here
http://docs.python.org/library/ re.html – 2011-02-08 23:23:51