regex - 如何根据以下约束获取正则表达式
问题描述
我需要帮助来根据以下创建密码的约束创建正则表达式。[这是一个课程作业]
注意:我不能使用扩展正则表达式。我需要使用核心正则表达式,即 { | , * , () }
- 它应该以数字或英文字母开头。
- 应该至少有一个小写,一个大写和一个数字。
- {@,$,#,%,&} 集合中应该至少有一个特殊字符。
- 任何 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 次),这就很清楚为什么会这样了不是你想用“核心正则表达式”做的事情......
推荐阅读
- mysql - Visual Studio - 绑定导入到项目的数据库
- c++ - 为类重载 ostream << 运算符
- azure-synapse - 无法在 Azure Synapse 中从 spark 池写入 sql 池
- python - 在 Windows 10 上安装 mysqlclient 时出现错误,不支持任何库
- ruby-on-rails - 如何在 mac mini m1 上安装 gem pg?
- c# - Xamarin Forms Byte [] to Image Source 未显示
- r - R-计算缺失值的距离
- timezone - 如何在 Prestashop 1.7.7.2 中使用正确的客户端时区显示日期?
- c# - 身份 ASP.NET 登录到错误的 UserId
- php - 聊天实时 laravel、socket.io + redis