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