preg_match("/^([0-9a-zA-Z])+$/", $newvalue)
我有上面的preg_match代码,检查用户输入是否至少有一个小写,一个大写和一个数值..
但这似乎不起作用,因为如果它们是数字或小写或大写,它接受值。并且不确定其中一个是否存在
需要修复什么?
答案 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]
已匹配的任何字符串提供其他匹配条件。