[英]Python: Regular expression to match alpha-numeric not working?
我希望匹配从网站输入的字符串,以检查是否是字母数字,可能包含下划线。 我的代码:
if re.match('[a-zA-Z0-9_]',playerName):
# do stuff
出于某种原因,这与疯狂的角色相匹配,例如:nIg○▲☆★◇◆
我只想要常规AZ和0-9和_匹配,这里有什么我想念的吗?
当没有指定LOCALE
和UNICODE
标志时,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.