我有一个表单,它使用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变量显示已输入的密码。
我一直在寻找解决方案的几个小时,但无济于事。
有什么想法吗?
答案 0 :(得分:0)
您的正则表单形式不正确。我不完全确定你放的那个会匹配什么,但我很确定这是你想要的那个:
\d+
所有这一切都与任何数字匹配(实际上+
可能也没有必要),所以如果没有匹配,你可以确信在任何地方都没有数字。
答案 1 :(得分:0)
这是否曾通过验证?目前,您的正则表达式只接受具有以下特征的密码:第一个字符必须是大写字母,第二个字符必须是小写字母,后跟一个或多个数字。
尝试更像这样的事情:
/[A-Za-z0-9]+/
你也可以这样做:
/[a-z0-9]+/i
i
标志使其不区分大小写。
如果您希望它包含至少一个数字,您可以执行以下操作:
/\d/
您可以一个接一个地运行匹配。