繁体   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