preg_match("/^([0-9a-zA-Z])+$/", $newvalue)
我有上面的preg_match代码,检查用户输入是否至少有一个小写,一个大写和一个数字值。
,但这似乎不起作用,因为它接受数值,如果它们是数字或小写或大写。并不能确保其中一个存在
需要修复什么?
试试这个。它检查包含至少一个数字、一个小写字符串和一个大写字符串
的$newvalue的所有条件preg_match("(^(?=.*[a-z])(?=.*[A-Z])(?=.*'d).+$)",$newvalue)
的例子:
<?php
if(preg_match("(^(?=.*[a-z])(?=.*[A-Z])(?=.*'d).+$)","RoHan123aA"))
{
echo ":) success";
}
else
{
echo ":(";
}
?>
参考。它的工作原理。
您刚刚定义了一个应用于整个字符串的字符类。它不检查每个单独的范围是否存在一次。通常在PHP代码中使用三个比较/preg_match调用来完成此操作。
但是在这种情况下,使用一些断言也很简单:
preg_match("/^(?=.*[A-Z])(?=.*'d)([0-9a-zA-Z]+)$/", $newvalue)
你想加多少就加多少。它们同时应用,并为[0-9a-zA-Z]
组已经匹配的字符串提供额外的匹配条件。