好的,所以我正在开发一个登录系统,并且我正在努力阻止我不想要的用户输入,我的部分验证是确定用户名只有字母数字,以及密码,以及一个单独的验证电子邮件。因此,我在 php.net 上找到了几个可以使用的示例,因为在 php 中的所有内容中,这些 preg 匹配的东西对我来说几乎没有任何意义。
我遇到的问题是误报。前两个在 true 时返回 false,并且电子邮件验证按预期工作,但对于我的生活,我不知道为什么。我可以简单地删除!在前面强制我对表达式的预期答案,但我实际上想知道为什么两个结构几乎完全相同的语句返回不同的布尔值。
<?php
$user = "testing2";
$pass = "testing1";
$email = "testing@gmail.com";
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";
}
?>