我想要求以下内容:
......我想出了这个:
(?=.{6,})(?=(.*\d){2,})(?=(.*\W){2,})
Run Code Online (Sandbox Code Playgroud)
现在,我还想确保没有两个连续字符是相同的.我有点时间让它工作了.这就是我自己得到的东西:
(\S)\1+
Run Code Online (Sandbox Code Playgroud)
...但如果我试图将两者结合在一起,那就失败了.
我在应用程序的限制范围内运行.它的默认要求是1个字符长度,没有正则表达式,也没有非标准字符.
无论如何...
使用这个测试工具,我希望y90e5 $匹配,但y90e5 $ $不匹配.
我错过了什么?
Tor*_*dek 11
这是一个正则表达式的坏地方.你最好使用简单的验证.
有时候我们无法影响规范并且必须编写实现,无论是什么时候,一些古老的后台系统必须通过网络连接但是对输入有一定的限制,或者只是因为你的老板要求你.
编辑:删除了基于提问者的原始正则表达式的正则表达式.
修改原始代码以适合您的描述,因为它似乎没有真正起作用:
编辑:q.然后更新以反映另一个版本.我在下面解释了一些差异:
我的版本:两个或两个以上\W,\d可以互相重复,但不能相互出现(这是我不正确的假设),我修复了长度> 7,这是一个典型的"抓住所有"更高效"表达.
^(?!.*((\S)\1|\s))(?=.*(\d.+){2,})(?=.*(\W.+){2,}).{8,}
Run Code Online (Sandbox Code Playgroud)
新版本在原来的问题:两个或更多的\W和\d被允许彼此相邻的出现.此版本目前支持长度> = 6,而不是长度> 7,如文中所述.
当前的答案,更正,应该是这样的,它采取更新的q.,我对长度> 7的评论和优化,然后它看起来像:^(?!.*((\S)\1|\s))(?=(.*\d){2,})(?=(.*\W){2,}).{8,}.
更新:你的原始代码似乎不起作用,所以我稍微改了一下
更新:更新了答案以反映有问题的变化,不再允许空格