我想通过使用正则表达式在C++中验证使用随机密码生成器函数生成的密码。正则表达式范围不能用于验证随机生成的密码
密码的规则是: 密码必须是总共8个字母。密码可以是4个大写字母和4个数字或6个大写字母和2个数字。
有效实例:
- ABCD1234
- PQRSTU88
我用这表达: /^(?=.{8}$)([AZ] {4,6})([0-9] {2,4})\ w +/gm
and this website测试表达式: http://regexr.com/3frd4
它工作时的范围内保持为{1,4}但如果我改变至{2,4}第二示例密码失败。
点击细节按钮显示,对于第一示例密码:ABCD1234,
捕获组#1捕捉ABCD &捕获组#2仅捕获123(未1234?)。
对于第二个例子的密码:PQRSTU88,
捕获组#1捕捉PQRSTU &捕获组#2捕捉只有8(未88?)。
根据我的理解,{2,4}指定至少2个数字至多4个数字。那么为什么我的正则表达式在第二个例子中不适用于该范围。
这是因为'\ w +'。你为什么使用它? –
@WiktorStribiżew我是正式表达的新手,没有完全理解\ w的含义。删除它后,它是正确的。如果您已将此评论发布为答案,我会将其标记为已接受的答案。 – Ghos3t
是的,我发布了一个答案。你接受了,谢谢。我也提出了这个问题。 :)干杯。 –