/ /正規表現、文字列はホワイトリストに入れられた文字の組み合わせであり、ブラックリストには何も含まれていません - javascript、regex、qml

正規表現、文字列はホワイトリストに入れられた文字の組み合わせであり、ブラックリストには何も含まれていません - javascript、regex、qml

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不正な文字


ありがとう!

回答:

回答№1は4

あなたはほとんどそこにいる、先読み主張はいくつかの仕事が必要です:

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

そうすれば、負のルックアヘッド内の正規表現は、(少なくとも)1つ 2 または 3 文字列内のどこにでも(すなわち、任意の数の文字の後に(.*))、アサーションを失敗させます。

この(明らかに)単純化された例では、もちろん、 /^[014-9]{2,255}$/.