Nik*_*kko 1 php regex passwords validation
^([a-zA-Z0-9!@#$%^&*|()_\-+=\[\]{}:;\"',<.>?\/~`]{4,})$
Run Code Online (Sandbox Code Playgroud)
这个正则表达式是否适用于这些规则?
它旨在成为密码验证器.语言是PHP.
是?
老实说,你要的是什么?你为什么不测试它?
但是,如果您想要改进它的建议,可以提出一些问题:
/\w/而不是/0-9a-zA-Z_/?()一边?你不需要捕捉整个事物,因为你已经拥有了整个东西,并且它们不需要分组任何东西.我要做的是分别检查长度,然后检查正则表达式,看它是否有任何不良字符.你的好字符列表似乎足够大,以这种方式可能更容易.但这可能取决于你正在做什么.
编辑:现在,我知道这是PHP为中心的,/\w/是安全的,因为PHP使用PCRE库,这是不完全的Perl,并在PCRE,\w将不符合Unicode的单词字符.因此,为什么不检查长度并确保没有无效字符:
if(strlen($string) >= 4 && preg_match('[\s~\\]', $string) == 0) {
# valid password
}
Run Code Online (Sandbox Code Playgroud)
或者,使用很少使用的POSIX字符类[[:graph:]].它应该在PHP中与在Perl中完全相同.[[:graph:]]匹配任何字母数字或标点字符,听起来像你想要的,并[[:^graph:]]应匹配相反的.要测试所有字符是否与图形匹配:
preg('^[[:graph:]]+$', $string) == 1
Run Code Online (Sandbox Code Playgroud)
要测试是否有任何字符与图形不匹配:
preg('[[:^graph:]]', $string) == 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |