用于验证用户名和密码的正则表达式

时间:2015-07-24 12:57:58

标签: php regex

我需要一个用于用户名和密码验证的正则表达式。对于用户名我想允许A-Z a-Z 0-9和这些特殊字符:@:.我试图使用它:

if(preg_match('/[A-Za-z0-9@:.]/', $username)) {
      $this->err = 'error';
    }

但那不起作用。对于密码,我希望他们至少有一个大写的小写和一个数字。

1 个答案:

答案 0 :(得分:1)

您需要anchor您的模式并使用前瞻来验证这些情况。

if(preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9@:.]+$/', $username)) { ... }

(?= ... )是零宽度断言,不消耗字符串上的任何字符。

因此,它只匹配字符串中的位置。零宽度的点是验证正常表达式是否能够或者不能与当前位置相匹配,而不会增加整体匹配。