Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于用户名和密码验证的正则表达式_Php_Regex - Fatal编程技术网

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

Php 用于用户名和密码验证的正则表达式,php,regex,Php,Regex,我需要一个用于用户名和密码验证的正则表达式。对于用户名,我希望允许使用A-Z A-Z 0-9和以下特殊字符:@。我尝试使用它,以便: if(preg_match('/[A-Za-z0-9@:.]/', $username)) { $this->err = 'error'; } 但这不起作用。对于密码,我希望它们至少有一个大写字母、一个小写字母和一个数字。您需要修改您的模式,并使用lookahead来验证这些情况 if(preg_match('/^(?=.*[A-Z])

我需要一个用于用户名和密码验证的正则表达式。对于用户名,我希望允许使用A-Z A-Z 0-9和以下特殊字符:
@。
我尝试使用它,以便:

if(preg_match('/[A-Za-z0-9@:.]/', $username)) {
      $this->err = 'error';
    }
但这不起作用。对于密码,我希望它们至少有一个大写字母、一个小写字母和一个数字。

您需要修改您的模式,并使用lookahead来验证这些情况

if(preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9@:.]+$/', $username)) { ... }
是一个零宽度断言,它不使用字符串上的任何字符


因此,它只匹配字符串中的一个位置。零宽度点是验证,以查看正则表达式是否可以从当前位置向前匹配,而不添加到整体匹配中。

好的,但是您有用于密码验证的正则表达式吗?@johncode,情况并非如此,因为
存在于类中。Hm,但是为什么这不起作用呢?你需要锚定它并允许多个<代码>^[A-Za-z0-9@:.]+$如果!preg_match也是,因为这使它成为一个有效的通行证,对吗?谢谢你还有一个正则表达式用于密码验证吗?这是你的密码验证
,用于密码我希望他们至少有一个大写字母、一个小写字母和一个数字
。这就是为什么我们有这么多正则表达式问题的原因。