regex - 不允许正则表达式 大写字母后跟小写字母后跟数字后跟特殊字符
问题描述
正则表达式需要匹配以下格式
- 至少 1 个大写字母
- 最少 1 个小写字母
- 最少 1 个数字案例
- 最少 1 个特殊字符
不允许连续超过两个相同的字符
但是我们不想遵循下面的特定 Patten(首字母大写,后跟数字,后跟特殊字符-(例如,Fall2015!))表示大写后跟小写后跟数字后跟特殊字符
(?=.{8,24}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[_.!@$*=-?#])(([A-Za-z0-9_.!@$*=-?#])\2?(?!\2))
解决方案
尝试这个:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_.!@$*=?#-])(?!.*(.)\1\1)(?!.*[A-Z][a-z]+\d+[_.!@$*=?#-])[\w.!@$*=?#-]{8,24}$
主要变化是:
^
锚定表达式开始(?!.*(.)\1\1)
这可以防止三倍的字符(?!.*[A-Z][a-z]+\d+[_.!@$*=?#-])
防止像“Fall2015!”这样的输入</li>[\w.!@$*=?#-]{8,24}$
将输入限制为仅这些字符且仅 8-24 长度- 将连字符移动到 char 类的末尾,使其成为文字连字符(不是范围)
还要注意\d
as shorthand for[0-9]
和\w
as shorthand for的介绍[a-zA-Z0-9_]
。
推荐阅读
- php - 由于 JSON 中的错误,使用 sendgrid 使用 PHP 发送邮件失败
- asp.net-core - HTTP 错误 500.30(Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException:系统找不到指定的文件。)
- javascript - 使用函数返回对象属性的键?
- oracle-apex - 成功验证后也收到错误消息,但它在 oracle apex 中的处理
- sql - 尝试使用 SQL 创建表时标识符无效
- asp.net-mvc - 使用外部 configSource 将连接字符串替换为 Web.Release.config
- java - Visual Studio Code 显示“需要 Java 11 或更高版本才能运行。请下载并安装最新的 JDK”
- assembly - 在 x86-64 中,pcmpestri 指令在 RAX 和 RDX 中以字符为单位还是以字节为单位获取其长度参数?
- python - 在 GAE + python + Flask 中检索 URL 路径时出错
- python - dateparser 是如何得到这个结果的?