javascript - Angular 4 的密码正则表达式失败
问题描述
我添加了一个正则表达式,它将检查至少 8 个字符、至少一个数字、一个大写字母、一个小写字母和一个特殊字符 这是使用的正则表达式
'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&])[A-Za-zd$@$!%*?&].{8,}'
上面的正则表达式在大多数情况下都可以正常工作,但是当我使用
1oB!gb0s5
或者
Pass@123
它失败。谁能告诉我这里的问题。
解决方案
这是您的正则表达式中实际使用输入的部分:
[A-Za-zd$@$!%*?&].{8,}
这意味着密码必须以上述字符类中的字符之一开头。这也意味着一个有效的密码必须有9 个或更多字符,因为该类计为 1,并且{8,}
意味着 8 个或更多。因此,以下内容将失败,因为它不以任何此类字符开头:
1oB!gb0s5
您给出的第二个示例由于不同的原因而失败,因为它只有 8 个字符:
Pass@123
我不知道你在这里想要什么逻辑。如果您只想确保密码具有小写、大写、数字和特殊字符,那么也许您可以删除前导字符类并坚持使用前瞻:
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{8,}
这是一个演示,它显示您的两个示例密码将使用上述模式传递。
演示
推荐阅读
- python - 如何在z之后增加字母字符而不获取特殊字符?
- python - 在 Jupyter Notebook Python 3.7.1 中执行函数后变量被更改
- typescript - 如何在 Angular 应用程序中使用 gltf-validator 包
- c# - 如何为方法 MongoDB.Bson.Serialization.BsonSerializer.Deserialize 自定义映射字段名称或类型
- html - 如何通过 iFrame 实现它?
- postgresql - Postgresql 总和中的 DISTINCT 与 CASE 语句
- r - 将宽数据重塑为长格式
- text - 如何查找具有特定字体和字体大小的文本的位长
- razor - 访问索引视图中的枚举项
- python - 使用现有变量名称创建数据框名称