php preg_match字母数字,至少有一个大写字符

时间:2011-10-24 10:27:54

标签: php preg-match

preg_match("/^([0-9a-zA-Z])+$/", $newvalue)

我有上面的preg_match代码,检查用户输入是否至少有一个小写,一个大写和一个数值..

但这似乎不起作用,因为如果它们是数字或小写或大写,它接受值。并且不确定其中一个是否存在

需要修复什么?

2 个答案:

答案 0 :(得分:3)

试试这个。它检查包含至少一个数字,一个小写字符串和一个大写字符串的$ newvalue的所有条件

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

示例:

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

?>

参考这个。它有用。

答案 1 :(得分:0)

您只定义了一个应用于整个字符串的字符类。它不会检查每个个体范围是否存在一次。通常,在PHP代码中使用三个比较/ preg_match调用来完成此任务。

但在这种情况下,使用assertions

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

您可以添加任意数量的内容。它们同时应用,并为组[0-9a-zA-Z]已匹配的任何字符串提供其他匹配条件。