0

PHPで数値、特にスラッグで渡されたDB IDを検証する必要がありますが、正規表現を正しく取得できないようです...

必要な数をフィルタリングしないため、使用できませんis_numeric()。同様に対処しますctype_digit()

// Values to Test
$tests = [42, '42', '42a', 'a42', '042', 1337, 0, '0', TRUE, FALSE, '1e4', 'not numeric', 9.1, '9.0', ''];

// RegEx
return !preg_match("/[^0-9]/", $val);

それはほとんど機能していますが、正規表現でも値をテストする必要があり、FALSE両方''とも有効として戻ってきています...

1 の有効な長さ (値ではない) を確認しようとしましreturn !preg_match("/[^0-9]{1}/", $val);たが、正しく取得できないようです...

http://davidwalsh.name/php-validatie-numeric-digitsからサンプルとコメントをチェックアウトしましたが、サンプルコードを動作させることができません...

現在の数字のみの正規表現を知っている人はいますか?

4

2 に答える 2

6

ロジックを二重反転する理由。最も簡単な方法は、文字列全体が数字 (正確には 1 つ以上の数字) で構成されていることをアサートすることです。

return preg_match('/^[0-9]+$/', $val);

また

return preg_match('/^\d+$/', $val);
于 2012-11-29T16:14:19.913 に答える
0

これを試して:

return !preg_match("^[0-9]+$",$val);
于 2012-11-29T16:16:44.867 に答える