密码验证的正则表达式第一个和最后一个字母不能有符号

我需要一个用于密码验证的正则表达式。验证规则-

  • 密码区分大小写

  • 长度不得超过 50 个字符

  • 必须至少包含 1 个数字

  • 必须至少有 1 个符号(非字母或数字)字符

  • 第一个字符不能是符号(非字母或数字)

  • 最后一个字符不能是符号(非字母或数字)

  • 不得连续重复任何字符超过 2 次

  • 必须至少有 1 个小写字母

  • 必须至少有 1 个大写字母

  • 长度必须至少为 8 个字符

到目前为止,我有这个 -

 "^(?!.*(.)\\1{2})(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^A-Za-z0-9]). 
        {8,50}$"

它不适用于第一个和最后一个字符不能是符号。

我试过了

^[a-zA-Z0-9](?!.*(.)\1{2})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{6,48}[a-zA-Z0-9]$

但它不起作用。请帮帮我。


天涯尽头无女友
浏览 293回答 2
2回答

蓝山帝景

每个限制都可以向前看:^(?=.*\d).{8,50}(无关)密码区分大小写.{8,50} 长度不得超过 50 个字符且长度必须至少为 8 个字符(?=.*\d) 必须至少包含 1 个数字(?=.*(\W|_)) 必须至少有 1 个符号(非字母或数字)字符[^\W_] 第一个字符不能是符号(非字母或数字)[^\W_] 最后一个字符不能是符号(非字母或数字)(?!.*(.)\1) 不得连续重复任何字符超过 2 次(?=.*[a-z]) 必须至少有 1 个小写字母(?=.*[A-Z]) 必须至少有 1 个大写字母把它们放在一起:^(?!.*(.)\1)(?=.*\d)(?=.*(\W|_))(?=.*[a-z])(?=.*[A-Z])[^\W_].{6,48}[^\W_]$见现场演示。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java