Python 数字、字母出现次数的正则表达式
Python Regex for number of times occurences of digit,alphabet
我正在尝试编写正则表达式来验证令牌。
my token has a following structure
:
- 3个或更多[0-9]
digits
- 5 个或更多 [a-z]
small alpha
- 2个或更多[#@]
special characters
- 5 个或更多 [A-Z]
upper alpha
(可选 ?
)可能存在或不存在。
注意:可选的 [A-Z] 字符可能存在于某些标记中,也可能不存在,当它存在于标记中时,它应该在 5 or more
次之间。
- 令牌长度不同于
minimum of 6 to a max of 30
few examples of valid/invalid matches:
token1 : t4xa@ui13p#o6
breakdown : there are 7 [a-z] , 2 special chracter[@#] , 4 digits [0-9]
VALID MATCH: True
token2: 3@piy13Qx9#13@z1337
breakdown: there are 5 [a-z] , 3 special character [@#] , 10 digits [0-9] and 1 [A-Z](which is optional)
VALID MATCH: False (because `[A-Z]` exist in token but it exist for `1` time, it should exist atleast of 5 or more.)
token3: 3@piy1ABC3Qx9#13@DEGFz1337
breakdown: there are 5[a-z], 7 [A-Z] , 10 digits [0-9]
VALID MATCH: True
- 到目前为止,我设法编写了一个正则表达式来验证至少一位数字、一个大写字母、至少一个小写字母、至少一个特殊字符。
^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[@#])[\w\d@#]{6,30}$
如果还有 0 个或 5 个大写字符,那么您可以使用正向先行断言没有大写字符或至少 5 次。
(?=(?:[^A-Z\s]*$|(?:[^A-Z\s]*[A-Z]){5})
您可以使用否定字符 类 和量词来检查最少出现次数。
^(?=(?:[^\d\s]*\d){3})(?=(?:[^a-z\s]*[a-z]){5})(?=(?:[^@#\s]*[@#]){2})(?=(?:[^A-Z\s]*$|(?:[^A-Z\s]*[A-Z]){5}))[\w\d@#]{6,30}$
我正在尝试编写正则表达式来验证令牌。
my token has a following structure
:
- 3个或更多[0-9]
digits
- 5 个或更多 [a-z]
small alpha
- 2个或更多[#@]
special characters
- 5 个或更多 [A-Z]
upper alpha
(可选?
)可能存在或不存在。
注意:可选的 [A-Z] 字符可能存在于某些标记中,也可能不存在,当它存在于标记中时,它应该在 5 or more
次之间。
- 令牌长度不同于
minimum of 6 to a max of 30
few examples of valid/invalid matches:
token1 : t4xa@ui13p#o6
breakdown : there are 7 [a-z] , 2 special chracter[@#] , 4 digits [0-9]
VALID MATCH: True
token2: 3@piy13Qx9#13@z1337
breakdown: there are 5 [a-z] , 3 special character [@#] , 10 digits [0-9] and 1 [A-Z](which is optional)
VALID MATCH: False (because `[A-Z]` exist in token but it exist for `1` time, it should exist atleast of 5 or more.)
token3: 3@piy1ABC3Qx9#13@DEGFz1337
breakdown: there are 5[a-z], 7 [A-Z] , 10 digits [0-9]
VALID MATCH: True
- 到目前为止,我设法编写了一个正则表达式来验证至少一位数字、一个大写字母、至少一个小写字母、至少一个特殊字符。
^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[@#])[\w\d@#]{6,30}$
如果还有 0 个或 5 个大写字符,那么您可以使用正向先行断言没有大写字符或至少 5 次。
(?=(?:[^A-Z\s]*$|(?:[^A-Z\s]*[A-Z]){5})
您可以使用否定字符 类 和量词来检查最少出现次数。
^(?=(?:[^\d\s]*\d){3})(?=(?:[^a-z\s]*[a-z]){5})(?=(?:[^@#\s]*[@#]){2})(?=(?:[^A-Z\s]*$|(?:[^A-Z\s]*[A-Z]){5}))[\w\d@#]{6,30}$