求一个正则表达式:必须数字,可以是负数,但不能小于-2且不能大于999,不能有小数。

如题所述

<?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)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-03
/^(?:\-[12] | (?!0\d{1,2}) \d{1,3} )$/x
第2个回答  2011-07-03
什么是正则表达式~
相似回答