在PHP中使用正则表达式进行验证

在PHP中使用正则表达式进行验证,php,regex,Php,Regex,在PHP中使用正则表达式进行验证时遇到一些问题。(这是一个课堂作业,所以在如何做这件事上没有太多的灵活性,只需要让它发挥作用) ^^这里正则表达式不起作用(任何东西都通过验证) ^^这里正则表达式确实起作用 这让我觉得我没有合适的正则表达式,但我不知道合适的正则表达式是什么。。。我不允许任何数字或符号,只接受字母 下面是整个switch语句: switch ($name) { case 'firstname' : if (!preg_match('/^[a-zA-Z]+$

在PHP中使用正则表达式进行验证时遇到一些问题。(这是一个课堂作业,所以在如何做这件事上没有太多的灵活性,只需要让它发挥作用)

^^这里正则表达式不起作用(任何东西都通过验证)

^^这里正则表达式确实起作用 这让我觉得我没有合适的正则表达式,但我不知道合适的正则表达式是什么。。。我不允许任何数字或符号,只接受字母

下面是整个switch语句:

switch ($name) {
    case 'firstname' :
        if (!preg_match('/^[a-zA-Z]+$/', $firstname)) {
            $fnameError = "Please enter your first name. ";
            $somethingsWrong = true;
        } else if (empty($firstname)) {
            $fnameError = "Please enter your first name. ";
            $somethingsWrong = true;
        }
    case 'lastname' :
        if (!preg_match('/^[a-zA-Z]+$/', $lastname)) {
            $lnameError = "Please enter your last name. ";
            $somethingsWrong = true;
        } else if (empty($lastname)) {
            $lnameError = "Please enter your last name. ";
            $somethingsWrong = true;
        }
     case 'street' :
        if (empty($street)) {
            $streetError = "Please enter your street address. ";
            $somethingsWrong = true;
        }
     case 'city' :
        if (!preg_match('/^[a-zA-Z]+$/', $city)) {
            $cityError = "Please enter your city. ";
            $somethingsWrong = true;
        } else if (empty($city)) {
            $cityError = "Please enter your city. ";
            $somethingsWrong = true;
        }
     case 'state' :
        if ($state === "") {
            $stateError = "Please select a state. ";
            $somethingsWrong = true;
        }
    case 'zip' :
        if (!preg_match('/^\d{5}$/', $zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        } else if (empty($zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        }
     case 'email' :
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailError = "Email invalid.";
            $somethingsWrong = true;
        }
     case 'creditcard' :
        if ($creditCard === "") {
            $creditCardError = "Please choose a credit card. ";
            $somethingsWrong = true;
        }
     case 'cc' :
        if (!preg_match('/\d{16}|\d{18}/', $ccNumber)) {
            $ccError = "Please enter a valid credit card number. ";
            $somethingsWrong = true;
        } else if (empty($ccNumber)) {
            $ccError = "Please enter a valid credit card number. ";
            $somethingsWrong = true;
        }
     case 'cvv' :
        if (!preg_match('/\d{3}|\d{4}/', $cvv)) {
            $cvvError = "Please enter a valid CVV number. ";
            $somethingsWrong = true;
        } else if (empty($cvv)) {
            $cvvError = "Please enter a valid CVV number. ";
            $somethingsWrong = true;
        }
     case 'ticketnumber' :
        if (!preg_match('/^\d$/', $ticketNumber)) {
            $ticketError = "Please select your number of tickets.";
            $somethingsWrong = true;
        }
}

看一看,您甚至可能不需要正则表达式来测试名称是否有效。您在这里用值填充$firstname?在if语句之前,您是否检查过它是否包含您期望的值?您的正则表达式可以工作,下面是证据:
var\u dump($firstname)
并查看它在整个
switch($name)
语句中显示的内容
case 'zip' :
        if (!preg_match('/^\d{5}$/', $zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        } else if (empty($zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        }
switch ($name) {
    case 'firstname' :
        if (!preg_match('/^[a-zA-Z]+$/', $firstname)) {
            $fnameError = "Please enter your first name. ";
            $somethingsWrong = true;
        } else if (empty($firstname)) {
            $fnameError = "Please enter your first name. ";
            $somethingsWrong = true;
        }
    case 'lastname' :
        if (!preg_match('/^[a-zA-Z]+$/', $lastname)) {
            $lnameError = "Please enter your last name. ";
            $somethingsWrong = true;
        } else if (empty($lastname)) {
            $lnameError = "Please enter your last name. ";
            $somethingsWrong = true;
        }
     case 'street' :
        if (empty($street)) {
            $streetError = "Please enter your street address. ";
            $somethingsWrong = true;
        }
     case 'city' :
        if (!preg_match('/^[a-zA-Z]+$/', $city)) {
            $cityError = "Please enter your city. ";
            $somethingsWrong = true;
        } else if (empty($city)) {
            $cityError = "Please enter your city. ";
            $somethingsWrong = true;
        }
     case 'state' :
        if ($state === "") {
            $stateError = "Please select a state. ";
            $somethingsWrong = true;
        }
    case 'zip' :
        if (!preg_match('/^\d{5}$/', $zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        } else if (empty($zip)) {
            $zipError = "Standard 5-digit zip codes only. ";
            $somethingsWrong = true;
        }
     case 'email' :
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailError = "Email invalid.";
            $somethingsWrong = true;
        }
     case 'creditcard' :
        if ($creditCard === "") {
            $creditCardError = "Please choose a credit card. ";
            $somethingsWrong = true;
        }
     case 'cc' :
        if (!preg_match('/\d{16}|\d{18}/', $ccNumber)) {
            $ccError = "Please enter a valid credit card number. ";
            $somethingsWrong = true;
        } else if (empty($ccNumber)) {
            $ccError = "Please enter a valid credit card number. ";
            $somethingsWrong = true;
        }
     case 'cvv' :
        if (!preg_match('/\d{3}|\d{4}/', $cvv)) {
            $cvvError = "Please enter a valid CVV number. ";
            $somethingsWrong = true;
        } else if (empty($cvv)) {
            $cvvError = "Please enter a valid CVV number. ";
            $somethingsWrong = true;
        }
     case 'ticketnumber' :
        if (!preg_match('/^\d$/', $ticketNumber)) {
            $ticketError = "Please select your number of tickets.";
            $somethingsWrong = true;
        }
}