【发布时间】:2014-06-17 17:35:21
【问题描述】:
我正在尝试为用户名、密码和电子邮件验证创建一个简单的正则表达式检查器。
要求如下:
用户名:
- Only letters and numbers (a-z, A-z, 0-9).
- No spaces, linebreaks, tabs or special characters.
- At least 5 characters in length.
- No more than 20 characters in length.
密码:
- At least 8 digits in length.
- no more than 40 characters in length.
- Must contain at least 1 special character or number.
电子邮件:
- Must follow the format "value@value.com".
这是我目前所拥有的:
用户名 - 工作。
$username = $enteredUsername;
if(preg_match('/^[a-zA-Z0-9]{5,30}+$/', $username) == false ) {
echo "the username is invalid";
}
密码:还没有用:
$password = $enteredPassword;
if(preg_match('/^[a-zA-Z0-9]+[\w0-9]{8,}+$/', $password) == false ) {
echo "the password is invalid";
}
电子邮件 - 工作。
$email = $enetered email.
if (filter_var($email, FILTER_VALIDATE_EMAIL) == false) {
echo "the email is invalid";
}
电子邮件和用户名有效,但我似乎无法找出正确的密码正则表达式。
【问题讨论】:
-
如果您想防止 sql 注入,为什么要为您的密码使用正则表达式,只需使用准备好的语句
-
我所有的 sql 查询都会在数据库连接设置中自动准备。这是为了确保用户提供强密码,而不是 sql 注入。
-
只需要一个最小长度,剩下的交给用户。
-
是的,就像秋葵说的那样,我会先检查 3 或 4 次检查,首先检查密码字符数是否超过 16 是否足够强,是否少添加特殊字符或数字,如果少于 10 则不允许。如果可以更轻松,为什么要构建一个完整的正则表达式
-
Regex for password PHP 的可能重复项