Python代码使用正则表达式来确保字符串是字母数字加. - _

War*_*lax 6 python regex alphanumeric

我查看和搜索,找不到我需要的东西虽然我认为它应该很简单(如果你有任何Python经验,我不这样做).

给定一个字符串,我想在Python中验证它只包含字母数字字符:a-zA-Z0-9. _ -

例子:

公认:

bill-gates

Steve_Jobs

Micro.soft

被拒绝:

Bill gates - 不允许空格

me@host.com - @不是字母数字

我正在尝试使用:

if re.match("^[a-zA-Z0-9_.-]+$", username) == True:

但这似乎没有做到......

Mar*_*off 18

re.match不返回布尔值; 它返回MatchObject匹配或None不匹配.

>>> re.match("^[a-zA-Z0-9_.-]+$", "hello")
<_sre.SRE_Match object at 0xb7600250>
>>> re.match("^[a-zA-Z0-9_.-]+$", "    ")
>>> print re.match("^[a-zA-Z0-9_.-]+$", "    ")
None
Run Code Online (Sandbox Code Playgroud)

所以,你不应该这样做re.match(...) == True; 相反,你应该检查re.match(...) is not None这种情况,这可以进一步缩短到公正if re.match(...).


Ign*_*ams 5

切勿使用== True== False用于比较。许多类型已经有一个 bool 等效项,您应该改用它:

if re.match("^[a-zA-Z0-9_.-]+$", username):
Run Code Online (Sandbox Code Playgroud)