首页 > 解决方案 > 小写、大写、数字和最少 8 个字符的正则表达式失败

问题描述

我已经查看并找到了很多关于正则表达式的信息。它有很好的记录,但我显然是个白痴,或者已经研究这个问题太久了!

我需要匹配的模式是任意数量的大写、小写和数字,至少有 8 个字符。我不想接受任何其他内容,例如非字母数字字符 (_ *^& 等)

我的努力是

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])\S{8,}$

可悲的是,当我使用https://regex101.com/时,这与以下任何一项都不匹配

aaaaaaaa
AAAAAAAA
00000000
asdfFDSA167
#fFaf9374A
12345678
123456NBh

其中 2 个是有效的,但我不明白为什么我会遇到问题

最终目标是在(HTML 5 input pattern="" />`)的pattern属性中使用它input

标签: javascriptregex

解决方案


我相信这就是您正在寻找的:^[a-zA-Z0-9]{8,}$

或者也许是这样:^[a-z]{8,}|[A-Z]{8,}|[0-9]{8,}$

第一个将匹配字母/数字的任意组合,第二个将仅匹配相似字符的序列。考虑到这个问题,很难准确地说出你在寻找什么。

编辑:我犯了一个错误,但修复了它


推荐阅读