正式表达php为专业人士

时间:2013-10-15 00:20:39

标签: php regex

你能帮我正确表达一下这个:

$value = '["number"]';
or
$value = '["number","number"]';
or
$value = '["number","number","number"]';
or
...
...
...
...
$value = '["number","number","number","number","number","number","number"......,"number"]';


//$number can be rand(0, 99.....999);

我需要将结果验证为真或假!

2 个答案:

答案 0 :(得分:2)

你真的需要使用PCRE吗?你的例子是有效的json。

$array = json_decode('["number", "number", "123"]');
var_dump($array);

如果您只需要数字,可以过滤它。

$new_array = array_filter($array, 'ctype_digit');
$result = count($array) == $new_array? $new_array : null;

var_dump($result);

答案 1 :(得分:2)

这是我的版本:

function test($v)
{
    if (preg_match('/^\\[("number")(,"number")*\\]$/', $v))
        echo 'ok<br>';
    else
        echo 'fail<br>';
}

或者如果“数字”确实是数字,那么这个:

function test($v)
{
    if (preg_match('/^\\[("[0-9]+")(,"[0-9]+")*\\]$/', $v))
        echo 'ok<br>';
    else
        echo 'fail<br>';
}

注意 - 只接受正面自然,需要更改为负数和十进制/浮点数