Geo*_*rge 2 php regex validation preg-replace
好的,所以我试图用正则表达式preg_match一个字符串(一个输入的密码),但在互联网上阅读/观看正则表达式信息几个小时后,我仍然不明白它..
我目前有:
'/ ^ [AZ] ^ [az] + $ /'
密码必须:
介于8到16个字符之间.
至少包含1个大写字母
包含至少1个小写字母
包含至少1个数字
如果您还可以包含具有上述所有要求的正则表达式,但也
包含至少1个符号
为了我自己的学习,我将不胜感激.请尝试解释您的正则表达式,以便我可以理解它.谢谢!
8到16个字符:
^.{8,16}$
Run Code Online (Sandbox Code Playgroud)至少有一个大写字母
(?=.*[A-Z])
Run Code Online (Sandbox Code Playgroud)至少一个小写字母
(?=.*[a-z])
Run Code Online (Sandbox Code Playgroud)至少一个号码
(?=.*\d)
Run Code Online (Sandbox Code Playgroud)把它放在一起:
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,16}$
Run Code Online (Sandbox Code Playgroud)
如果你想要一个支持Unicode的变种(可能对PHP无效,我知道):
^(?=.*\p{Lu})(?=.*\p{Ll})(?=.*\p{Nd}).{8,16}$
Run Code Online (Sandbox Code Playgroud)
这通过在开头具有许多正向前瞻断言来工作,每个断言检查字符串的一个期望属性.Lookahead断言检查括号中的部分是否可以在此位置匹配,但不会提升字符串中的实际匹配位置.这里的实际匹配只是确保长度符合您的要求.
但请注意,这应该与几个正则表达式匹配检查每个属性的计算基本相同.它只是打包在一个正则表达式中.
哦,(?=.*[,.!?])根据您认为的符号,至少可以使用或类似的方式检查一个符号.