错误使用php preg_match不匹配字符串

时间:2016-12-28 02:03:51

标签: php regex

我需要获取字符串遵循此格式(C-001和C-001-C)

public function facebook_request(){


            $data = array (
                'redirect_uri' => base_url('authentication/handle_facebook_login'),
                'scope' => 'email'
            );

            var_dump($data);

            $this->load->library('connect');
            redirect($this->connect->getLoginUrl($data));
    }

    public function handle_facebook_login() {

            $this->load->library('connect');
            if($this->connect->user) {
                print_r($this->connect->user);
            } else {

            }
    }

这是我的代码

C-001 (match)
C-002C (not match)
C-003-C (match)
D-004 (not match)

但结果显示3字符串(C-001,C-002C,C-003-C),C-002C错了,如何解决?

1 个答案:

答案 0 :(得分:1)

在您当前的正则表达式中,您正在寻找C-,然后是 1 数字。如果您想要3个数字,则应使用[0-9]{3}

^C-[0-9]{3}$

如果您还想允许其他-C,可以使用(-C)?(问号在那里作为可选组:

^C-[0-9]{3}(-C)?$

这是一个有效的例子:
https://regex101.com/r/0JHN43/1

这个位于preg_match区块内:

if(preg_match("/^C-[0-9]{3}(-C)?$/", $input_line, $output_array)) {