我想对我构建的一个简单的正则表达式有所了解,以验证逗号分隔的文件扩展名列表(在逗号字符之前或之前也可能有一个或多个空格)。
此正则表达式应返回以下值:
$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';
}
感谢您的好意见
答案 0 :(得分: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';
}
这应该比使用正则表达式更快。</ p>
答案 1 :(得分:1)
你也可以稍微缩短一下:
preg_match('#^\w+(\s*,\s*\w+)*$#' , $list)