php preg_match буквенно-цифровой, по крайней мере с одним символом верхнего регистра - PullRequest
0 голосов
/ 24 октября 2011
preg_match("/^([0-9a-zA-Z])+$/", $newvalue)

У меня есть вышеуказанный код для preg_match, чтобы проверить, имеет ли пользовательский ввод хотя бы один нижний регистр, один верхний регистр и одно числовое значение.

, но, похоже, это не работает,поскольку он принимает значения, если они числовые ИЛИ строчные или прописные.и не проверяет наличие каждого из них

Что необходимо исправить?

Ответы [ 2 ]

3 голосов
/ 24 октября 2011

Попробуйте это. Он проверяет все критерии $ newvalue, содержащие хотя бы одно число, одну строку нижнего регистра и одну строку верхнего регистра

preg_match("(^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$)",$newvalue)

Пример:

<?php 
if(preg_match("(^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$)","RoHan123aA"))
{
  echo ":) success";
}
else
{
  echo ":(";
}

?>

См.Это. Это работает.

0 голосов
/ 24 октября 2011

У вас есть только что определенный класс символов, который применяется ко всей строке. Он не проверяет, что каждый отдельный диапазон присутствует один раз. Обычно для этого вы используете три сравнения / preg_match-вызовов в вашем PHP-коде.

Но в этом случае это также просто сделать с некоторыми утверждениями :

 preg_match("/^(?=.*[A-Z])(?=.*\d)([0-9a-zA-Z]+)$/", $newvalue)

Вы можете добавить столько, сколько хотите. Они применяются одновременно и предоставляют дополнительные условия сопоставления для любой строки, которая уже соответствует группе [0-9a-zA-Z].

...