0

コンマ区切りのファイル拡張子のリストを検証するために作成した単純な正規表現について、ご意見をお聞かせください (コンマ文字の前後に 1 つまたは複数のスペースがある場合もあります)。

この正規表現は、次の値を返す必要があります。

$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 に答える