在php preg_match()

时间:2017-06-07 06:11:02

标签: php preg-match

我正在尝试在mail()中为Bcc创建一个preg_match()。 我创建了下面的preg_match()

if(empty($mail_bcc))
        {
            $_SESSION['error'] .= "<li>Please enter BCC email id.</li>";
            $error = 1;
        }
         else if(!preg_match('/^\s*[A-Za-z0-9@. ,]+\s*$/',$mail_bcc)|| preg_match('/^ /',$mail_bcc) || preg_match('/ $/',$mail_bcc))
        {
            $_SESSION['error'] .= "<li>Please enter a valid BCC email id.No spaces are allowed and Separate BCC email addresses with commas (,)</li>";
            $error = 1;
        }

为此我得到的结果

  1. abc.gmail.com = TRUE
  2. abc.gmail.com,abc.gmail.com = TRUE
  3. abc@gmail.com = = TRUE
  4. 但我想强制要求@。 对于以下情况,它应该返回False / Error

    1. abc.gmail.com = FALSE
    2. abc.gmail.com,abc.gmail.com FALSE

1 个答案:

答案 0 :(得分:2)

要在像你这样的正则表达式中要求至少一个@,最简单的方法是使用(?=[^@]*@)正向前瞻:

'/^(?=[^@]*@)\s*[A-Za-z0-9@. ,]+\s*$/'
   ^^^^^^^^^^

(?=[^@]*@)构造将开始寻找除@[^@]*)以外的任何0 +字符,直到字符串开头的第一个@({ {1}})。如果找到^,将搜索其余的消费模式,否则,正则表达式引擎将立即使匹配失败。