正则表达式需要匹配以下格式
不允许连续出现两个以上相同的字符
但我们不想遵循以下特定模式(首字母大写,后跟数字,后跟特殊字符-(例如,Fall2015!))表示大写后跟小写后跟数字后跟特殊字符
(?=.{8,24}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[_.!@$*=-?#])(([A-Za-z0-9_.!@$*=-?#])\2?(?!\2))
答案 0 :(得分:0)
看起来以下内容应该打勾:
^(?![A-Z][a-z]+\d+[.!@$*=?#-]$|.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[.!@$*=?#-]).{8,24}$
查看在线demo
^
- 起始字符串锚点。(?!
- 负面预测:
[A-Z][a-z]+\d+[.!@$*=?#-]$
- 要否定的文字模式:一个大写字母、1 个以上小写字母、1 个以上数字和字符串结尾前的一个特殊字符。|
- 或:.*(.)\1\1
- 断言位置在三个相同字符的任何位置都没有以下序列:0+ 个字符、第一个捕获组和对该组的两个直接反向引用。)
- 关闭否定前瞻。(?=.*[A-Z])
- 在字符串中断言大写字母的正向预测。(?=.*[a-z])
- 在字符串中断言小写字母的正向预测。(?=.*\d)
- 在字符串中断言数字的正向预测。(?=.*[.!@$*=?#-])
- 断言字符串中特殊字符的正向预测。.{8,24}
- 除换行符以外的任何 8-24 个字符。$
- 结束字符串锚点。答案 1 :(得分:0)
试试这个:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_.!@$*=?#-])(?!.*(.)\1\1)(?!.*[A-Z][a-z]+\d+[_.!@$*=?#-])[\w.!@$*=?#-]{8,24}$
主要变化是:
^
将表达式锚定为开始(?!.*(.)\1\1)
防止三重字符(?!.*[A-Z][a-z]+\d+[_.!@$*=?#-])
防止输入“Fall2015!”[\w.!@$*=?#-]{8,24}$
将输入限制为仅这些字符和 8-24 位长度还要注意引入 \d
作为 [0-9]
的简写和 \w
作为 [a-zA-Z0-9_]
的简写。