2011-02-08 38 views

回答

3
>>> re.match('^\w+$', '4tg25g_3yg') 
<_sre.SRE_Match object at 0x7f8093f198b8> 
+0

+1最短正則表達式 – 2011-02-08 23:25:51

4

基本上是:

import re 
regex = re.compile("^[a-zA-Z0-9_]+$") 
if regex.match(some_string): 
    do_something() 
+0

`A-Z`有一種黴味舊的代碼味道,甚至可能是瀕臨死亡的味道。 – tchrist 2011-02-09 12:10:04

2
"^[a-zA-Z0-9_]+$" 

"^[\w_]+$" 
+0

順便說一句,`_`在第二個中是多餘的。 `\ w`已經將它包含在python中(真正的任何正常的正則表達式引擎)。 – eldarerathis 2011-02-08 23:50:46

+0

那些不相同。此外,**任何具有文字「A-Z」或「a-z」的模式在某些情況下實際上總是錯誤的。**它具有代碼異味。出於許多原因,`\ w`非常好,因爲如果它符合[UTS#18](http://unicode.org/reports/tr18/#Compatibility_Properties),它會將任何代碼點與字母,標記,十進制數字或連接符標點屬性。 – tchrist 2011-02-09 12:08:16

0

像這樣的東西應該工作

import re 
if re.match("^[A-Za-z0-9_]*$", user_string): 
    # do something here 
相關問題