私が先読みでチェックする5つの条件があるとしましょう。正規表現の条件の一部に一致する(3のうち3)
^(?=.*[a])(?=.*[b])(?=.*[c])(?=.*[d])(?=.*[e]).*$
これは、B、C、D、Eの全ての順列と一致しますが、私はマッチさせたい:私はこれは私の正規表現になり
a, b, c, d, e
それらを呼び出します。
0123:5のうち少なくとも3意味これは通過する( 'HVD' などの排他的でないが指摘しました)
しかし、この意志はない
aaaaa
bbbaaaaa
EDIT: 本当の使用方法は、パスワードポリシーのためである - 5つの条件(小文字、大文字、特殊な文字、数、など)あなたが外にXを遵守しなければなりませんy条件。
これは簡単にコードで行われますが、これは正規表現の限界を押し上げる理論的な質問です。
私はあなたに2つの選択肢があると思います:1)5または3のうちの3のすべての順列にマッチする)キャプチャグループのうちの3つにデータがある場合、一致をキャプチャしてチェックインします。 –
"これはa、b、c、d、eのすべての順列と一致します" - 排他的ではありません。それはうれしいことに 'abcdef'のマッチを報告します。 – hvd
あなたは 'OR'演算子でそれらを組み合わせることができます。もしあなたのフレーバーでサブルーチンがサポートされていれば、サブルーチンを使用してください。 – Jan