PHP - preg_match 仅用于数字和单破折号

PHP - preg_match for only numbers and single dash

假设我只允许这种格式 2015-2016,它包含数字并且只有一个破折号。我怎样才能用 preg_match 做到这一点?我尝试了以下方法,但没有成功。

$a = '2015-2016';
if(!preg_match('/[^0-9\-]/i',$a)) {
    then return not valid data`
} 
$a = '2015-2016';
if(!preg_match('/^[0-9 \-]+$/',$a)) {
 then return not valid data } 

试试看。

希望这会有所帮助

preg_match('/^\d{4}-\d{4}$/', $string);

^ 字符串开头

\d{4}匹配一个数字[0-9]正好4次

- 匹配字符 - 字面意思

\d{4}匹配一个数字[0-9]正好4次

$ 字符串结束