Хорошо, поэтому я пишу проверку паролей для нашей политики паролей, которая требует 3 из 4 основных классификаций. Там, где у меня проблемы, это совпадение специальных символов.
Вот что у меня есть:
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;
}
}
Итак, в основном я проверяю строку для каждого регистра, цифр, прописных, строчных и специальных символов. У нас нет никаких ограничений на какие-либо специальные символы, и мне также нужны символы Unicode. Работает ли \ W в этом случае или это также будет включать числа снова? Я не могу найти отличную документацию по \ W, поэтому мне неясно в этой части.
Кто-нибудь знает о простом регулярном выражении, которое охватывало бы все специальные символы и символы Юникода, не содержащие цифр и букв?
Каждый может свободно использовать это, так как я думаю, что больше чем несколько человек искали это.