我想验证用户是否仅使用正则表达式输入了以逗号分隔的单词列表,这是否有更好的方法:
$match = "#^([^0-9 A-z])(,\s|$))+$#";
Run Code Online (Sandbox Code Playgroud)
这不是用于解析,因为我将使用explode,它仅仅是验证用户是否正确理解应该用逗号分隔值.
我不知道,单独的值应该是什么样的,但这可能会对你有所帮助
$value = '[0-9 A-Z]+';
$match = "~^$value(,$value)*$~i";
Run Code Online (Sandbox Code Playgroud)
当你知道,你的价值应该是什么样的,你可以改变$value.
从这个问题中得到这个评论
我试图禁止0-9但允许aZ,因为,正如我所说,它应该只是一个单词列表,没有空格,只是一个单词列表.
只是改变 $value
$value = '[A-Z]+';
Run Code Online (Sandbox Code Playgroud)
请注意,我使用i-modifier $match,它也包括所有小写字母.
但是,"真正的"csv允许比这更多一些,例如你可以在每个值周围加上引号.我建议您解析该行,然后测试每个值
$values = str_getcsv($line);
$valid = true;
foreach ($values as $value) {
$valid = $valid && isValid($value);
}
Run Code Online (Sandbox Code Playgroud)