0

正規表現を使用して、Express (および Express-param) で http 要求パラメーターを検証したいと思います。このパラメーターは、少なくとも 11 桁の数字でなければなりません。

なぜapp.param('uid', /^[0-9]{11,}+$/);エラーを返すのですか?

そして、なぜapp.param('uid', /^[0-9]{11,}/);うまくいかないのですか?のようなパラメーターをブロックし、 or1234567890cを受け入れます。12345678901c12345678901ca

4

1 に答える 1

1

あなたの2つのパターンは矛盾しています。1 つ目 (無効な正規表現) には$、入力が文字列の末尾までパターンと一致する必要があることを指定する末尾があります。問題は+、数字の後に があり、 ですでに繰り返す必要がある回数を指定すると無効になることです{11,}

+2 番目のパターンは、と の両方をドロップし$ます。をドロップするの+は完璧ですが、 をドロップすると、数字の$には何でも表示されます。

$2 番目のパターンにa を追加してみてください。

app.param('uid', /^[0-9]{11,}$/);
于 2012-11-02T14:36:41.237 に答える