Я действительно пуст на стороне Regex, и поэтому не мог получить, как сделать Regex в PHP, который проверяет, имеет ли строка эту конкретную последовательность символов.
$str = '2323,321,329,34938,23123,54545,123123,312312';
Средство проверки, содержит ли строка только целые числа (не десятичные, никакие алфавиты или что-то еще), разделенные запятой (,).
Вы можете использовать это регулярное выражение:
'/^\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";
Просто для удовольствия без регулярного выражения:
var_dump( !array_diff($a = explode(',', $str), array_map('intval', $a)) );
Если вам не нужен формат, вы можете просто проверить наличие символов:
$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!'; }