文字列をセット[a、i、b、w]の一意の文字で構成する必要があります。文字列は、このセットの少なくとも1文字と最大4文字で構成する必要がありますが、文字を繰り返すことはできず、任意の順列が許可されます。したがって、たとえばaaまたはbwawは許可されません。正規表現を使用してこれをテストできますか、それともコードで自分で解析する必要がありますか?
ありがとうございました
(数学的な)文字のセット(複数の出現を許可するマルチセットとは対照的に、セット内に同じ文字が2つ出現しない)の場合、次のテンプレートに基づいて正規表現を作成できます。
^(?!.*(.).*\1)[<set_of_characters>]{1,<cardinality_of_character_set>}$
たとえば、あなたの場合:
^(?!.*(.).*\1)[abiw]{1,4}$
(?!.*(.).*\1)
はゼロ幅の負の先読みであり、前方のテキストに繰り返し文字が含まれているかどうかを確認します.*(.).*\1
。これは、文字が入力文字列に2回出現してはならないという上記の仮定を使用しています。
[abiw]{1,4}
いずれかの文字が1〜4回出現するだけです[abiw]
。上記の負の先読みで文字列に繰り返し文字が含まれていないことを確認したので、この部分では、文字列が指定されたセットの文字のみで構成されていることを確認します。