正则表达式分隔符无法在preg_match()中工作

时间:2016-03-01 18:51:45

标签: php regex preg-match

我有一堆电话号码要排序,我正在尝试使用正则表达式来识别电话号码,并将它们与已混入的垃圾数据分开。为实现这一点,我正在使用preg_match()模式如下:

$pattern = '/(\(?\d{3}\)?\s*[\-\.]?\s*\d{3}\s*[\-\.]?\s*\d{4})/';

尽管正则表达式被/括起来,preg_match()正在将正则表达式的一部分标识为修饰符,但返回错误:

  

未知修饰符']'

为什么preg_match()忽略分隔符并将]解释为修饰符?

以下是上下文:

    $pattern = '/(\(?\d{3}\)?\s*[\-\.]?\s*\d{3}\s*[\-\.]?\s*\d{4})/';
    $matches;
    while($record = mysqli_fetch_array($result)){
        $tel = $record['PHONENUMBER'];
        $tel_count++;
        if(strlen($tel) >= 7){
            preg_match($pattern, $tel, $matches);
            $valid_tel_count += sizeof($matches);
            if(sizeof($matches) > 1){
                $overpacked_tel_count++;
            }
            for($i = 0; $i < sizeof($matches); $i++){
                //echo($matches[$i].'; ');
            }
            //echo('<br />');
        }
        else{
            $invalid_tel_count++;
            if(strlen($tel) == 0 || $tel == ''){
                $empty_tel_count++;
            }
            else{
                var_dump($tel);
                echo('<br />');
            }
        }
    }

0 个答案:

没有答案