使用正则表达式验证逗号分隔列表

Lia*_*ley 0 php regex

我想验证用户是否仅使用正则表达式输入了以逗号分隔的单词列表,这是否有更好的方法:

 $match = "#^([^0-9 A-z])(,\s|$))+$#";
Run Code Online (Sandbox Code Playgroud)

这不是用于解析,因为我将使用explode,它仅仅是验证用户是否正确理解应该用逗号分隔值.

Kin*_*nch 5

我不知道,单独的值应该是什么样的,但这可能会对你有所帮助

$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)

str_getcsv()