Да?
Честно говоря, что вы просите? Почему бы вам не проверить его?
Если, однако, вы хотите предложения по его улучшению, некоторые вопросы:
- Что проверяют это регулярное выражение для?
- Почему у вас такой большой набор разрешенных символов?
- Почему бы вам не использовать
/\w/
вместо /0-9a-zA-Z_/
?
- Почему у вас есть все в
()
s?Вам не нужно захватывать все это, потому что у вас уже есть все, и они не нужны, чтобы сгруппировать что-либо.
Что я хотел бы сделать, это проверить длину отдельно, а затем проверить на регулярное выражение, чтобы увидеть, если он имеет какие-либо плохих символов. Ваш список хороших персонажей кажется достаточно большим, и это может быть проще сделать так. Но это может зависеть от того, для чего вы это делаете.
EDIT: Теперь, когда я знаю, что это PHP-ориентированный, /\w/
безопасен, потому что PHP использует библиотеку PCRE, которая не является в точности Perl, и в PCRE, \w
воли не матч Unicode символов слова. Таким образом, почему бы не проверить длину и убедитесь, нет недопустимых символов:
if(strlen($string) >= 4 && preg_match('[\s~\\]', $string) == 0) {
# valid password
}
В качестве альтернативы, используйте Малопользованный POSIX символы класса [[:graph:]]
. Он должен работать практически так же, как в PHP, как в Perl. [[:graph:]]
соответствует любому буквенно-цифровому символу или символу пунктуации, который звучит так, как вы хотите, и [[:^graph:]]
должен соответствовать противоположному. Для того, чтобы проверить, если все символы совпадают график:
preg('^[[:graph:]]+$', $string) == 1
Чтобы проверить, если какие-либо символы не совпадают график:
preg('[[:^graph:]]', $string) == 0
Если вы используете это для проверки пароля, мой вопрос таков: почему вы ограничиваете типы символов, которые они могут использовать? Вам действительно нужно только проверить минимальное количество символов – MahlerFive
И 4 символа слишком мало для чего-то заслуживающего защиты. И если это не стоит защищать, зачем добавлять пароль? –
@MahlerFive Этого было бы достаточно? Обратите внимание, что пароли будут хешированы + соленые до того, как они будут проверены на БД. Если проверки количества символов в пароле будет достаточно, я больше не буду использовать это регулярное выражение. @Vinko Как я уже сказал в приведенном ниже комментарии, я использовал только 4, потому что он в настоящее время находится в разработке, и 4 символа легче вводить при входе в систему. – Nikko