好的,所以我正在开发一个登录系统,并且我正在努力防止用户输入我不想要的,我的验证的一部分是确定用户名只是字母数字,以及密码,并对电子邮件进行单独验证。所以我发现了几个在php.net上使用的例子,因为在php中所有的东西,这些preg匹配的东西对我来说是毫无意义的。Preg_Match假结果
我遇到的问题是误报。前两个返回false为true,并且电子邮件验证按预期工作,但对于我的生活,我不知道为什么。我可以简单地删除!在前面强迫我的表达意图的答案,但我实际上想知道为什么两个语句构造几乎完全相同的返回不同的布尔值。
<?php
$user = "testing2";
$pass = "testing1";
$email = "[email protected]";
if (!preg_match('/[^A-Za-z0-9]+/', $user)) {
echo "Username must only contain English letters and numbers<br />";
}
if (!preg_match('/[^A-Za-z0-9]+/', $pass)) {
echo "passw must only contain English letters and numbers<br />";
}
if (!preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i', $email)) {
echo "Please use a valid email";
}
?>
*“passw只能包含英文字母和数字”* - 为什么? – Ryan
因为我希望在使用精确过滤之前让代码正常工作。 – Pyro4816
这里有一个函数密码检查:'if(strlen($ pass)<8){echo“passw太短,至少使用8个字符;越多越好。 }' –