1

我有一个表单,它使用 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) 并在提交时,密码 post 变量显示已输入的密码。

我一直在寻找解决方案几个小时,但无济于事。

有任何想法吗?

4

2 回答 2

0

Your regex form is incorrect. I'm not entirely sure what the one you put will match, but I'm pretty sure this is the one you want:

\d+

All that does is match ANY digit (actually the + may not be necessary either), so if there are no matches, you can be confident that there are no numbers anywhere.

于 2013-08-28T18:52:26.117 回答
0

这是否通过了验证?目前您的正则表达式只接受具有以下特征的密码:第一个字符必须是大写字母,第二个字符必须是小写字母,并且后跟 1 个或多个数字。

尝试更多类似的东西:

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

你也可以这样做:

/[a-z0-9]+/i

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

如果您希望它包含至少一个数字,您可以执行以下操作:

/\d/

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

于 2013-08-28T18:53:19.587 回答