【问题标题】:PHP: Simple Regex for Username, password, and emailPHP:用户名、密码和电子邮件的简单正则表达式
【发布时间】: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 的可能重复项

标签: php regex passwords


【解决方案1】:

对于密码正则表达式,请尝试:

^(?=.*[^a-zA-Z]).{8,40}$

这使用排除字母字符的positive lookahead,以确保包含特殊字符或数字。

【讨论】:

    猜你喜欢
    • 2013-01-20
    • 1970-01-01
    • 2019-06-28
    • 2015-06-11
    • 2016-12-23
    • 1970-01-01
    • 2011-10-12
    • 2012-08-27
    • 1970-01-01
    相关资源
    最近更新 更多