首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式密码验证

正则表达式密码验证
EN

Stack Overflow用户
提问于 2018-10-04 06:43:50
回答 2查看 270关注 0票数 3

我想使用正则表达式来验证密码的字符要求。

要求:密码应该有16个字符。

  1. 字符1-4应至少有1位数字.
  2. 字符5-8应该至少有一个小写字符.
  3. 字符9-12应该至少有一个大写字符.
  4. 字符13-16至少应有一个符号(标点符号).

我尝试过使用正则表达式进行积极的展望,但它最终无法工作:

echo 'XXXX9999ccccXXX%' | grep -P '^((?=.*[0-9]).{4})((?=.*[a-z]).{4})((?=.*[A-Z]).{4})((?=.*\pP).{4})$'

EN

回答 2

Stack Overflow用户

发布于 2018-10-04 06:53:09

您的查找语法已关闭,因为它没有正确地检查您在需求中提到的位置。下面的regex模式似乎适用于我:

代码语言:javascript
复制
^(?=.{0,3}\d)(?=.{4,7}[a-z])(?=.{8,11}[A-Z])(?=.{12,15}[.,$%^&!@]).{16}$

解释:

代码语言:javascript
复制
(?=.{0,3}\d)           - number in positions 1-4
(?=.{4,7}[a-z])        - lowercase in positions 5-8
(?=.{8,11}[A-Z])       - uppercase in positions 9-12
(?=.{12,15}[.,$%^&!@]) - symbol in positions 13-16

演示

我不太了解grep或Linux,不足以评论您是否在最佳使用,但这至少可以解决您在模式中遇到的任何问题。

票数 4
EN

Stack Overflow用户

发布于 2018-10-04 06:56:45

你可以用

代码语言:javascript
复制
^(?=.{0,3}\d).{4}(?=.{0,3}[a-z]).{4}(?=.{0,3}[A-Z]).{4}(?=.{0,3}[\W_]).{4}$

请参阅这个演示

基本上,该模式包括四个前瞻性消费模式部分,因为每个消费模式匹配4个字符,因此它总共匹配16个字符的字符串(请注意,^$锚点也很重要)。

详细信息

  • ^ -字符串的开始
  • (?=.{0,3}\d) -在0到3个字符之后必须有一个数字
  • .{4} -任何4个字符都会被消耗。
  • (?=.{0,3}[a-z]) -在0到3个字符之后必须有一个小写字母
  • .{4} -任何4个字符都会被消耗。
  • (?=.{0,3}[A-Z]) -在0到3个字符之后必须有大写字母
  • .{4} -任何4个字符都会被消耗。
  • (?=.{0,3}[\W_]).{4} -在0到3个字符之后必须有一个特殊的字符(非字母数字)。
  • $ -字符串的结尾
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52640579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档