需要一个正则表达式来接受大于0和逗号的数值

时间:2017-02-22 06:52:39

标签: php regex codeigniter validation

我必须检查逗号分隔值,其中我只允许大于0的数字字符,下面的逗号是我需要的格式

  • -1,2,3,567,76,67,20,10

及以下是正则表达式不应接受的错误

  1. 0,23,344 23,
  2. 0,2323,85 34
  3. 344,44,00
  4. SDFS,34,34,
  5. 我使用了正则表达式

    这个接受所有数字字符和逗号但也接受0

    return ( ! preg_match("/^([0-9,])+$/i", $quantity)) ? FALSE : TRUE;
    

    这个人接受在任何地方不接受0

    return ( ! preg_match("/^([1-9,])+$/i", $quantity)) ? FALSE : TRUE;
    

2 个答案:

答案 0 :(得分:0)

这应该做的工作 ^[1-9][0-9]*$

答案 1 :(得分:0)

为了良好的可读性和可维护性,我宁愿坚持使用验证函数 - 这样的话:

function validateCsv($input)
{
    foreach (str_getcsv($input) as $value) {
        if (!preg_match('#^[\d]+$#', $value)) {
            throw new \Exception('invalid CSV-value ' . $value);
        }
        if ($value <= 0) {
            throw new \Exception('invalid CSV-value ' . $value);
        }
    }
}