我正在尝试以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."; }
谢谢!
答案 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
}