0

我想就我为验证逗号分隔的文件扩展名列表而构建的一个简单正则表达式发表您的意见(在逗号字符之后或之前也可能有一个或多个空格)。

此正则表达式应返回以下值:

$list = 'jpg,png,gif'; // valid
$list = 'jpg   , png, gif'; // valid
$list = 'jpg'; // valid
$list = 'jpg, png, gif'; // valid
$list = 'jpg png, gif'; // INVALID
$list = 'jpg png'; // INVALID

我正在使用下面的正则表达式,你怎么看?它可以优化或缩短吗?

if(!preg_match( '#^[0-9a-zA-Z]+([ ]*,[ ]*[0-9a-zA-Z]+)*$#' , $list))
{
    echo 'invalid extension list';
} else{
    echo 'valid extension list';
}

谢谢你的好建议

4

2 回答 2

2

也许更简单的方法是拆分,并查看是否有任何结果包含空格。

function isvalid($var)
{
    return !strpos ($var, ' ');
}

$array = explode (',', $list);
$array_filtered = array_filter ($array, 'isvalid');

if ($array == $array_filtered) {
    echo 'Valid';
}
else {
    echo 'Invalid';
}

这应该比使用正则表达式快得多。

于 2012-05-12T12:41:54.317 回答
1

你也可以缩短一点:

preg_match('#^\w+(\s*,\s*\w+)*$#' , $list)
于 2012-05-12T12:44:24.757 回答