簡體   English   中英

Python:正則表達式匹配字母數字不起作用?

[英]Python: Regular expression to match alpha-numeric not working?

我希望匹配從網站輸入的字符串,以檢查是否是字母數字,可能包含下划線。 我的代碼:

if re.match('[a-zA-Z0-9_]',playerName):
            # do stuff

出於某種原因,這與瘋狂的角色相匹配,例如:nIg○▲☆★◇◆

我只想要常規AZ和0-9和_匹配,這里有什么我想念的嗎?

當沒有指定LOCALEUNICODE標志時,Python有一個特殊的序列\\w用於匹配字母數字和下划線。 所以你可以修改你的模式,

pattern = '^\\w+$'

你的正則表達式只匹配一個字符。 試試這個:

if re.match('^[a-zA-Z0-9_]+$',playerName): 

...檢查是否是字母數字,可能包含下划線。

你的意思是字面意思,所以只允許一個下划線,總數? (對於玩家名稱而言並非不合理;特別是相鄰的下划線可能很難被其他玩家閱讀。)“a_b_c”不匹配嗎?

如果是這樣的話:

if playerName and re.match("^[a-zA-Z0-9]*_?[a-zA-Z0-9]*$", playerName):

條件的新第一部分檢查空值,這簡化了正則表達式。

這對下划線的位置沒有限制,因此所有“_a”,“a_”和“_”都匹配。 如果您想要同時阻止前導和尾隨下划線,這對於玩家名稱來說也是合理的,請更改為:

if re.match("^[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)?$", playerName):
// this regex doesn't match an empty string, so that check is unneeded

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM