PHP中的数字输入验证

时间:2012-11-18 20:55:08

标签: php

我正在尝试以php格式验证帐号的输入。它应包含8个数字和' - '可选。如果有' - ' - 应该被忽略。 按下提交按钮后,警告消息将显示在表单上方,以防输入无效。

请帮忙。

这是我到目前为止所得到的,但我不确定这是否正确,并且不知道如何在表单上方显示警告消息。

$acctnum= "$acctnum";

if(empty($acctnum)){
  echo "You did not enter an account number, please re-enter"; }

else if(!preg_match("\-^[0-9]{8}", $acctnum)){
  echo "Your account number can only contain eight numbers. Please re-enter."; }

谢谢!

3 个答案:

答案 0 :(得分:2)

您似乎没有尝试。没有文档或教程会告诉你制作这样的正则表达式。对于初学者来说,分隔符在哪里?为什么-在字符类之外被转义,因此没有特殊含义? ^在那里做什么?

这应该这样做:

$acctnum = str_replace("-","",$acctnum);
if( !preg_match("/^\d{8}$/",$acctnum)) echo "Error...";

答案 1 :(得分:0)

由于正则表达式非常昂贵,我会改为:

$acctnum = (int) $acctnum; // this automatically ignore the '-'
if ($acctnum < 0) $acctnum = -$acctnum;
$digits = ($acctnum == 0) ? log10($acctnum) + 1 : 1;
if ($digits === 8) { ... }

答案 2 :(得分:0)

将任务分成两部分。首先用str_replace删除“ - ”,然后检查数字。

$match = preg_match("/^\d{8}$/", str_replace("_", "", $str));
if ($match > 0) {
    // Correct
} else {
    // incorrect
}