Jef*_*rdt 3 php special-characters preg-match
好的,我正在为我们的密码策略编写密码检查器,这需要4个主要分类中的3个.我遇到问题的地方是特殊字符匹配.
这是我到目前为止所拥有的:
private function PasswordRequirements($ComplexityCount) {
$Count = 0;
if(preg_match("/\d/", $this->PostedData['password']) > 0) {
$Count++;
}
if(preg_match("/[A-Z]/", $this->PostedData['password']) > 0) {
$Count++;
}
if(preg_match("/[a-z]/", $this->PostedData['password']) > 0) {
$Count++;
}
// This is where I need help
if(preg_match("/[~`!@#$%^&*()_-+=\[\]{}\|\\:;\"\'<,>.]/", $this->PostedData['password']) > 0) {
$Count++;
}
if($Count >= $ComplexityCount) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我正在做的是检查每个案例的字符串,数字,大写,小写和特殊字符.我们对任何特殊字符没有任何限制,我还需要unicode字符.\ W在这种情况下工作还是会再包含数字?我找不到关于\ W的精彩文档,所以我不清楚这一部分.
有没有人知道一个简单的正则表达式,涵盖所有特殊字符和不包含数字和字母的unicode字符?
任何人都可以自由使用它,因为我认为不止一些人一直在寻找这个.
Mar*_*cus 13
此模式允许所有不是数字或aZ的字符.
[^\da-zA-Z]
Run Code Online (Sandbox Code Playgroud)
关于\W它是否定的\w,与之相同[A-Za-z0-9_].因此,\W所有字符都不是英文字母,数字或下划线.
正如我提到的那样,这是学习正则表达式的一个很好的资源.这是一个测试正则表达式的好网站.
如果你想匹配特殊字符
preg_match('/[\'\/~`\!@#\$%\^&\*\(\)_\-\+=\{\}\[\]\|;:"\<\>,\.\?\\\]/', $input)
Run Code Online (Sandbox Code Playgroud)