2011-11-07 4 views
5

カンマ区切りの数値を検証する正規表現を作成する必要があります。数字とカンマのみのPHP正規表現

彼らはのようになります

:1,2,3,4,5など....

値は次のように単一の数字のいずれかでなければなりません:いいえコンマの前または後に、無空のスペースの前または後に1 。

または...コンマで区切られた複数の数値。最初と最後の文字は数字でなければなりません。

私は順不同で数字とカンマのためにのみチェックを次のコードを持っていますが、それ:

は、どのように私は上記の説明に合わせて、以下の正規表現を変更できますか?

ありがとうございました!

// get posted value 
if(isset($_POST['posted_value'])) 
{ 
    $sent_value = mysqli_real_escape_string($conn, trim($_POST['posted_value'])); 
    if(preg_match('/^[0-9,]+$/', $posted_value)) 
    { 
     $what_i_need = $posted_value; 
    } 
    else 
    { 
     $msg .= $not_what_i_need; 
    } 
} 
else 
{ 
    $msg .= $posted_value_not_set; 
} 
+0

あなたが[this](http://en.wikipedia)を意味したときに、あなたは[this](http://en.wikipedia.org/wiki/Coma)と言っていました。 .org/wiki/Comma)。 – darvids0n

答えて

28

これはそれを行う必要があります。

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

は説明:

/   # delimiter 
^  # match the beginning of the string 
    \d   # match a digit 
    (?:  # open a non-capturing group 
     ,  # match a comma 
     \d  # match a digit 
    )  # close the group 
    *  # match the previous group zero or more times 
    $   # match the end of the string 
/   # delimiter 

あなたは複数桁の数字を許可する場合は、\d+\dを変更します。

2

たとえば、5,000のようにカンマで数字を入力できるようにしますか? 5.6のような小数はどうですか?

また、このようなコードを使用して入力を検証することもできます。

$values = explode(',',$sent_value); 
$valid = true; 

foreach($values as $value) { 
    if(!ctype_digit($value)) { 
     $valid = false; 
     break; 
    } 
}