密码验证不正确


Passwords not validating correctly

我有一个表单,它使用Javascript来定义起始值,用于标记目的,以实现与IE、Firefox和Chrome的交叉兼容性。为了正确工作,JS会根据用户输入或未输入的内容更改输入类型。

然后,我进行了PHP表单验证,以确保密码符合必须至少包含一个数字的规定,但每次我提交带有应该验证的密码的表单时,都会出现错误,即我的密码必须包含至少一个数字。

相关表格输入:

<input type="text" name="password" class="reg_pass" value="Password" 
onfocus="if (value == 'Password') { value = ''; } setAttribute('type', 'password');"
onblur="if ( value == '') { value='Password'; }
if ( value !== '' && value == 'Password') { setAttribute('type', 'text'); }" />

使用的相关PHP验证:

elseif (!preg_match("/[A-Z][a-z][0-9]+/", $password)) {
    $msg = "Password must contain at least one number";
}

注意:

我使用了print_r($_POST),提交后,密码发布变量会显示已输入的密码。

我找了几个小时的解决方案,但都无济于事。

有什么想法吗?

这是否通过了验证?目前,您的regex只接受具有以下特征的密码:第一个字符必须是大写字母,第二个字符必须为小写字母,后面跟着一个或多个数字。

试试类似的东西:

/[A-Za-z0-9]+/

你也可以做:

/[a-z0-9]+/i

i标志使其不区分大小写。

如果你想让它至少包含一个数字,你可以这样做:

/'d/

您可以将两者作为匹配项一个接一个地运行。

您的正则表达式形式不正确。我不完全确定你放的是什么,但我很确定这就是你想要的:

'd+

所要做的就是匹配任何数字(实际上+也可能不是必需的),所以如果没有匹配,你可以确信任何地方都没有数字。