题目:强密码验证【必须包含大小写字母和数字组合,不能有特殊字符,长度8-10】
查了资料都是用正则断言写的。譬如:(?!^\d+$)(?!^[a-zA-Z]+$).{8,}
我就是不明白为什么 前面两个()里为什么要这样写 为什么要写在前面两个位置。
<?exp
反前瞻不是针对匹配 后面 跟的不是exp的位置。这里后面在这里代表什么意思
求帮忙分析一下
题目:强密码验证【必须包含大小写字母和数字组合,不能有特殊字符,长度8-10】
查了资料都是用正则断言写的。譬如:(?!^\d+$)(?!^[a-zA-Z]+$).{8,}
我就是不明白为什么 前面两个()里为什么要这样写 为什么要写在前面两个位置。
<?exp
反前瞻不是针对匹配 后面 跟的不是exp的位置。这里后面在这里代表什么意思
求帮忙分析一下
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答558 阅读✓ 已解决
782 阅读
先上可视化分析图,
(?!
代表零宽度否定断言,只有表达式不符合右侧到)
位置的时候才继续匹配,否则终止.所以第一个的意思是,检测到从行开始到行结束只有数字(你的表达式d前面漏了)的情况下,则中止匹配,即直接不通过匹配
同理第二个的意思是,检测从行开始到行结束只有字母的情况下终止匹配
在满足前面两个条件的情况下,任意字符超过7次以上则满足匹配
另此表达式应该并不正确,如果只要满足题意那么应该只需要: