Там нет такого понятия, как число "АНГЛИЙСКИЙ" или письмом. Многие языки (или могут быть) записаны с использованием того же алфавита, что и английский. Его обычно называют латинским алфавитом.
Если вы действительно хотите принимать только латинские буквы и цифры, использование:
if preg_match("/^[a-zA-Z0-9]+$/", $_POST['password']) {
//good to go
} else {
//I don't like this password
}
Ваш оригинальный регулярное выражение имеет дополнительный задний ^
, и это позволяет пробелы и подчеркивания. Вы хотите, чтобы эти персонажи были допущены? Если это так, используйте ^[\w ]+$
.
Однако, если вы делаете это, чтобы ограничить символы, из которых могут состоять пароли, перестали думать о том, что вы делаете? Ограничение набора символов, которые вы принимаете для паролей, резко снижает их силу. Вы должны разрешить максимально широкий диапазон символов, чтобы пользователи могли выбирать надежные пароли.
Если вы проверяете наличие слабых паролей, пожалуйста, не обращайте внимания. Однако есть и другие факторы, которые вы должны учитывать как длину и наличие словарных слов. См. this answer для некоторых отличных деталей.
Относительно примечания, вы храните пароли своих пользователей в хешированной форме? Это абсолютная необходимость.
use '! Preg_match ('^ [a-zA-Z0-9 _] + $')' и не забудьте использовать 'else' –