【问题标题】:regex for a combination of chars and digits of certain length [duplicate]用于特定长度的字符和数字组合的正则表达式[重复]
【发布时间】:2020-03-06 15:05:17
【问题描述】:

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

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

但是,我希望整个字符串至少为 3 个字符,最多为 5 个字符。有没有办法做到这一点?

提前致谢!

【问题讨论】:

标签: python regex


【解决方案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 中观看它如何与一些示例输入匹配。


正则表达式电路

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

【讨论】:

  • 非常感谢您的回答!看来这个正则表达式只匹配具有交替数字/字母的字符串,即“a1b1”,但我也希望能够匹配“abc4”或“a45b6”等字符串。也感谢链接,看起来很有帮助
  • 是的,我正要这么说。您提供的正则表达式似乎仍然匹配仅由数字/字母组成的字符串,但再次感谢您的帮助(或者我可能没有正确使用正则表达式测试器)
  • 是啊!!完美的!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多