0

我正在尝试验证 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."; }

谢谢!

4

3 回答 3

2

你似乎没有在尝试。没有文档或教程会告诉您制作这样的正则表达式。首先,分隔符在哪里?为什么-当它在字符类之外并因此没有特殊含义时会被转义?那^在那儿做什么?

这应该这样做:

$acctnum = str_replace("-","",$acctnum);
if( !preg_match("/^\d{8}$/",$acctnum)) echo "Error...";
于 2012-11-18T20:57:32.567 回答
0

由于正则表达式非常昂贵,我会这样做:

$acctnum = (int) $acctnum; // this automatically ignore the '-'
if ($acctnum < 0) $acctnum = -$acctnum;
$digits = ($acctnum == 0) ? log10($acctnum) + 1 : 1;
if ($digits === 8) { ... }
于 2012-11-18T21:02:07.093 回答
0

将任务一分为二。首先去掉“-”,str_replace然后检查数字。

$match = preg_match("/^\d{8}$/", str_replace("_", "", $str));
if ($match > 0) {
    // Correct
} else {
    // incorrect
}
于 2012-11-18T21:12:52.293 回答