检查String中是否只有逗号用逗号分隔的整数

时间:2014-04-21 21:27:59

标签: php regex

我在Regex方面真的很空,这就是为什么无法在PHP中创建一个Regex来检查字符串是否具有这个特定的字符序列。

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

检查字符串是否仅包含以逗号(,)分隔的整数(不是十进制,没有alphabats或其他任何东西)的方法。

3 个答案:

答案 0 :(得分:9)

您可以使用此正则表达式:

'/^\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";

答案 1 :(得分:3)

只是为了没有正则表达式的乐趣:

var_dump(
    !array_diff($a = explode(',', $str), array_map('intval', $a))
);

答案 2 :(得分: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!';
}