もちろん。preg_match
で/,\s*\w{2,}/
これを教えてくれます:
if (preg_match('/,\s*\w{2,}/', $_POST['location'])) {
//Yep - there's a comma followed by at least two characters in there!
}
剖検:
,
- リテラル,
文字
\s*
- スペース/タブ/改行文字を 0 回から無制限に繰り返す
\w{2,}
- 任意の文字を 2 回から無制限に繰り返す
空のものもチェックしているようです。
<?php
$invalid = false;
$split = preg_split('/,\s*/', $_POST['location']);
foreach ($split as $part) {
if (strlen($part) < 2) {
$invalid = true;
break;
}
}
if (!$invalid) {
echo 'Success!';
} else {
echo 'Error!';
}
?>
あなたのために仕事をするために単一の正規表現が必要な場合は、これを行うことができます:
if (preg_match('/^(\w{2,},\s*)*(\w{2,})$/', $_POST['location'])) {
echo 'Success!';
} else {
echo 'Error!';
}
デモ
OK city,country
ERROR ok, city,country,
ERROR n, foo, bar
ERROR foo, bar, n
ERROR ,foo, bar, test
OK foo,bar
OK foobar