preg_match数字和逗号

时间:2014-01-09 17:44:55

标签: php preg-match

我有一些值,例如4,3或5。

我想只允许数字(从0到9)和逗号。

我找到了这个功能,pregmatch但它无法正常工作。

<?php
$regex="/[0-9,]/";
if(!preg_match($regex, $item['qty'])){
// my work
}
?>

怎么了? 感谢

4 个答案:

答案 0 :(得分:6)

更正语法:

$regex="/^[0-9,]+$/";

^表示行的开头

+代表一个或多个组字符

$代表行尾

答案 1 :(得分:4)

这应该这样做:

'~^\d+(,\d+)?$~'

它允许例如111,5,但1,,,1,,

失败
  • ^
  • 的开始
  • \d+后跟一个或多个数字
  • (,\d+)?可选:逗号,后跟一个或多个数字
  • $结束

\d是数字[0-9]

shorthand

你问$regex="/[0-9,]/";

有什么问题

它会匹配[characterclass]中的任何0-9,。甚至,在匹配abc1sa,b之类的字符串时,因为使用了 no anchors

答案 2 :(得分:1)

如果您知道它将是以逗号分隔的列表,请使用explode()

<?php

// test item with incorrect entries
$item = '1,2,3,4,d,@,;';

// explode whatever is between commas into an array
$item_array = explode(',', $item);

// loop through the array (you could also use array_walk())
foreach($item_array as $key => $val)
{
    // to clean it
    $item_array[$key] = (int) $val;

    // use the values here
}

// or here
?>

答案 3 :(得分:0)

<?php
    $regex = '/^[0-9,]+$/';
    if(!preg_match($regex, $item['qty'])) {
        // my work 
    }
?>