正则表达式,用于一定长度的字符和数字的组合

时间:2019-11-10 20:34:01

标签: python regex

我正在尝试查找与字母和数字的组合匹配的正则表达式,每种类型必须至少出现一次。我发现可以使用以下方法实现:

([a-z]+\d+|\d+[a-z]+)[a-z\d]*

但是,我希望整个字符串至少为3个字符,最多为5个字符。有办法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

猜测1

我的猜测是,也许

^(?!.*[a-z]{2}|.*[0-9]{2})[a-z0-9]{3,5}$

^(?!.*(?:[a-z]{2}|[0-9]{2}))[a-z0-9]{3,5}$

如果不允许两个连续的字母或数字,则可能是需要的。

RegEx Demo 1


猜猜2

如果我们至少要有一个字母和数字:

^(?=.*[a-z])(?=.*[0-9])[a-z0-9]{3,5}$

可能是一个选择。

RegEx Demo 2


猜猜3

如果允许3到5次字母或数字:

^[a-z0-9]{3,5}$

可能工作正常。

RegEx Demo 3

测试

import re

string = '''
aaa
aaa1
aaab1
a1
a1b2
a1b2c3
a1b2c3d4
'''

expression = r'^(?=.*[a-z])(?=.*[0-9])[a-z0-9]{3,5}$'

print(re.findall(expression, string, re.M))

输出

['aaa1', 'aaab1', 'a1b2']

如果您希望简化/修改/探索表达式,请在regex101.com的右上角进行说明。如果愿意,您还可以在this link中查看它如何与某些示例输入匹配。


RegEx电路

jex.im可视化正则表达式:

enter image description here