3

我正在尝试通过创建简单的示例来学习 PHP 中的正则表达式。这里我有一个非常简单的示例:

if($_POST){
   $errors = array();

  if(isset($_POST['name'])){
     if(!preg_match('/^([a-zA-Z]{3,8})$/',$_POST['name'])){
       $errors['name1'] = "Must enter Alphabet";
       $errors['name2'] = ""Cant be less than 3";
     }

  }
  if(count($errors)==0){
  header("Location: pro.php");
  exit();
  }
}
?>

<form method="POST" target="">
First name: <input type="text" name="name"><br>
<input type="submit" name="submit">
</form>

对我来说,验证工作正常,但我在基于错误显示错误消息时遇到问题。例如,我只想$errors['name1']在未输入字符串且输入$errors['name2']数字时显示错误。我试图将表达式分成两个标准:

if(isset($_POST['name']))
   {
     if(!preg_match('/^([a-zA-Z])$/',$_POST['name']))
     {
       $errors['name1'] = "Must enter Alphabet";
     }
      if(preg_match('/^{3,8}$/',$_POST['name']))
     {
       $errors['name2'] = "Cant be less than 3";
     }
   }

但我收到以下错误 在此处输入图像描述

更新

if(isset($_POST['name']))
   {
     if(!preg_match('/^([a-zA-Z])$/',$_POST['name']))
     {
       $errors['name1'] = "Must enter Alphabet";
     }
      if ( ! preg_match( '/.{3,8}/', $_POST['name'] ))
     {
       $errors['name2'] = "Cant be less than 3";
     }
   }
4

3 回答 3

0

好的,我将回答我的问题。感谢Masud Alam,我弄清楚了如何在正则表达式中做到这一点。提示正在使用

 if (!preg_match('/^[a-z]+$/i', $_POST['name'])) {
     //
 }

 if (!preg_match('/^.{3,25}$/', $_POST['name'])) {
     //
 }

到目前为止它对我有用!

于 2013-08-30T18:52:39.430 回答
0

您看到的错误是未在 {} 运算符之前的正则表达式中指定匹配条件的结果。如果您只关心是否输入了至少三个 ANY 字符,请尝试

if ( ! preg_match( '/.{3,8}/', $haystack ) )

您必须为要计算的范围提供一个“原子”。在这种情况下, '。' 表示任何单个字符。

于 2013-08-30T03:46:24.700 回答
0

怎么样:

if (isset($_POST['name'])) {
    if (preg_match('/[^a-z])/i', $_POST['name'])) {
        $errors['name1'] = "Must enter Alphabet";
    }
    if ( strlen($_POST['name']) < 3) {
        $errors['name2'] = "Cant be less than 3";
    }
    if ( strlen($_POST['name']) > 8) {
        $errors['name3'] = "Cant be more than 8";
    }
}

如果你真的想使用正则表达式:

if (preg_match('/[^a-z])/i', $_POST['name'])) {
    $errors['name1'] = "Must enter Alphabet";
}
if ( ! preg_match('/^.{3,8}$/', $_POST['name']) ) {
    $errors['name2'] = "Cant be less than 3";
}
于 2013-08-30T09:13:48.293 回答