當然。 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!';
}
DEMO
OK city,country
ERROR ok, city,country,
ERROR n, foo, bar
ERROR foo, bar, n
ERROR ,foo, bar, test
OK foo,bar
OK foobar
我認爲這是對正則表達式 –
它更容易爲我們瞭解你想匹配,當你提供一個例子超值,喜歡'城市,國傢什麼樣的情況下 - >確定,城市,國家, - >壞,...' –
@ZathrusWriter一個正確的格式將是:'城市,國家'這就是爲什麼只有一個逗號應該被允許,並在該逗號後面的AND之前的字符串。 – AlexioVay