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}$/
.