如何根据以下约束获取正则表达式
How to get a regular expression based on the following constraints
我需要帮助来根据以下用于创建密码的约束来创建正则表达式。 [这是课程作业]
注意:我无法使用扩展的正则表达式。我需要使用核心正则表达式,即 { | , * , () }
- 必须以数字或英文字母开头。
- 应该至少有一个小写字母,一个大写字母和一个数字。
- 应该至少有一个特殊字符来自 {@,$,#,%,&}。
- 任何 3 个或更多数字的序列不应重复相同的数字。
这是我目前的工作: \
A = { English letters **union** Digits } \
B = { Lowercase letters **union** Digits } \
C = { Uppercase letters **union** Digits } \
D = { Special characters } \
Regex = A(A)* ( B(B)* C(C)* D(D)* )
我想办法解决除最后一个以外的所有需求:
A = { English letters **union** Digits }
B = { Lowercase letters }
C = { Uppercase letters }
D = { Digits }
E = { Special characters }
F = { Union of all allowed characters }
然后你需要拼出所有可能的排列:
A (BB* CC* DD* EE* | BB* CC* EE* DD* | BB* DD* CC* EE* | BB* DD* EE* CC* | ...) F*
但是如果你想添加“不超过三个相同的数字”规则,我也没有找到一种方法来拼出所有这些可能性(并且为每个排列做 24 次),这使得很清楚为什么这不是你想用“核心正则表达式”做的事情......
我需要帮助来根据以下用于创建密码的约束来创建正则表达式。 [这是课程作业]
注意:我无法使用扩展的正则表达式。我需要使用核心正则表达式,即 { | , * , () }
- 必须以数字或英文字母开头。
- 应该至少有一个小写字母,一个大写字母和一个数字。
- 应该至少有一个特殊字符来自 {@,$,#,%,&}。
- 任何 3 个或更多数字的序列不应重复相同的数字。
这是我目前的工作: \
A = { English letters **union** Digits } \
B = { Lowercase letters **union** Digits } \
C = { Uppercase letters **union** Digits } \
D = { Special characters } \
Regex = A(A)* ( B(B)* C(C)* D(D)* )
我想办法解决除最后一个以外的所有需求:
A = { English letters **union** Digits }
B = { Lowercase letters }
C = { Uppercase letters }
D = { Digits }
E = { Special characters }
F = { Union of all allowed characters }
然后你需要拼出所有可能的排列:
A (BB* CC* DD* EE* | BB* CC* EE* DD* | BB* DD* CC* EE* | BB* DD* EE* CC* | ...) F*
但是如果你想添加“不超过三个相同的数字”规则,我也没有找到一种方法来拼出所有这些可能性(并且为每个排列做 24 次),这使得很清楚为什么这不是你想用“核心正则表达式”做的事情......