2014-04-21 1 views
4

Я действительно пуст на стороне Regex, и поэтому не смог получить, как создать Regex в PHP, который проверяет, имеет ли строка эту конкретную последовательность символов.Проверьте, имеет ли строка только целые числа, разделенные запятой в PHP

$str = '2323,321,329,34938,23123,54545,123123,312312'; 

средства, чтобы проверить, если строка содержит только целые числа (не десятичную, не alphabats или что-нибудь еще), разделенных запятыми (,).

ответ

5

Вы можете использовать это регулярное выражение:

'/^\d+(?:,\d+)*$/' 

Код:

$re = '/^\d+(?:,\d+)*$/'; 
$str = '2323,321,329,34938,23123,54545,123123,312312'; 

if (preg_match($re, $str)) 
    echo "correct format"; 
else 
    echo "incorrect format"; 
0

Если вы не заботитесь о формате, то вы можете просто проверить для персонажей:

$regex = '/^[0-9,]+$/'; 
if (preg_match($regex, $str) === 1) { 
    echo 'Matches!'; 
} 

Вы также можете сделать это, не используя регулярные выражения:

$str = str_replace(',', '', $str); 
if (ctype_digit($str)) { 
    echo 'Matches!'; 
} 

Если вы заботитесь о формате, то что-то подобное будет работать:

$regex = '/^[0-9]+(?:,[0-9]+)*$/'; 
if (preg_match($regex, $str) === 1) { 
    echo 'Matches!'; 
} 
3

Просто для удовольствия, без регулярных выражений:

var_dump(
    !array_diff($a = explode(',', $str), array_map('intval', $a)) 
); 
Смежные вопросы