<?php
//求一个正则表达式:必须数字,可以是负数,但不能小于-2且不能大于999,不能有小数。
$a=array(
'abc',
'-1',
'-4',
'1000',
'4.2',
'234',
'012', //非法?按非法做的
'007',
'333',
'999',
'+30',
'0'
);
$p='/^-[12]$|^\+?(?:0|[1-9]\d{0,2})$/'; //通用正则
$r=preg_grep($p,$a);
var_dump($r);//只列出有效
=================
array
1 => string '-1' (length=2)
5 => string '234' (length=3)
8 => string '333' (length=3)
9 => string '999' (length=3)
10 => string '+30' (length=3)
11 => string '0' (length=1)
追问非常感谢!!
如果不能为0的话可以吗?追加分!拜托,麻烦啦
追答$p='/^-[12]$|^\+?[1-9]\d{0,2}$/'; // 按不能为'0'或'04'
array
1 => string '-1' (length=2)
5 => string '234' (length=3)
8 => string '333' (length=3)
9 => string '999' (length=3)
10 => string '+30' (length=3)
11 => string '25' (length=2)