3

1) グループ A の文字の任意の組み合わせを含み、別のグループ D の文字を含まないようにユーザー入力を正規表現で検証する方法は?
2) また、文字列の長さが 2 ~ 255 であることを確認します

言い換えれば、すべての文字列文字に対して、A AND NOT D.

サーバーから 2 つの文字グループ (ホワイトリストとブラックリスト) を受け取り、それらに基づいてユーザー入力を検証する必要があります。私はデザインに影響を与えることはできず、それと共に生きなければなりません。また、他の設計上の制限により、正規表現を使用する必要があります。


これが私がこれまでに得たものです(まったく機能していません):

/^(?![23]+)[0-9]{2,255}$/

23は簡単にするための文字のブラックリストです
0 ~ 9 は簡単にするための文字のホワイトリストです

いくつかの例:

3014567890 --> 失敗、3 が存在する
0145678902 --> 失敗、2 が存在する
0123456789 --> 失敗、2 と 3 が存在する
014567890 --> OK
88774411489 --> OK
5 --> 失敗、文字数が足りない
1abc - -> 失敗、abc の不正な文字
ab1c --> 失敗、abc の不正な文字
abc1 --> 失敗、abc の不正な文字


ありがとう!

4

1 に答える 1

4

もうすぐそこです。先読みアサーションにはいくつかの作業が必要です。

/^(?!.*[23])[0-9]{2,255}$/

このように、否定先読み内の正規表現は、文字列内 (つまり、任意の数の文字 ( ) の後) に (少なくとも) 1 つ2または任意の場所にある場合に一致し、アサーションが失敗します。3.*

この (明らかに) 単純化された例では、もちろん を使用することもできます /^[014-9]{2,255}$/

于 2013-03-12T12:03:21.760 に答える