0

私はc#でActive Directoryの「マイナー」を構築しており、入力文字列が実際に有効な(正しい「構文」)組織単位であることを表明する必要があります。

組織単位は次のように構成されます。CN=SomeName,OU=SomeOrganizationalUnit,DC=SomeDomainPart,DC=SomeDomainPart,DC=SomeDomainPart

CN=またはOU=を含む必要はなく、少なくとも2つのDC =で構成できます。例: "DC=example,DC=com"

したがって、必要なのは、2文字(Az)、「=」、単語(a-zAZ0-9)、コンマの順に一致するものです。このグループは無限に発生する可能性がありますが、少なくとも2つは存在する必要があります。文字列全体がコンマで終わることはありません。

私はまだほとんど正規表現のコピーページ状態にあります。これは私が初心者のために得たものです

.[a-zA-Z0-9]{2}.[=]\W
4

2 に答える 2

1

次のようなことができます(ロイドの元の正規表現から始めます)。

^(?:(?:CN|OU|DC)\=\w+,)*(?:CN|OU|DC)\=\w+$

0個以上のグループに続けてコンマを入力し、最後に1つのグループを一致させます。

少なくとも合計2つのグループが必要な場合は、次のように変更*して+ください。

^(?:(?:CN|OU|DC)\=\w+,)+(?:CN|OU|DC)\=\w+$

グループの数が特定の範囲内にあることを要求する場合は、数量詞を使用します。

^(?:(?:CN|OU|DC)\=\w+,){1,3}(?:CN|OU|DC)\=\w+$

これには、合計で2〜4つのグループが必要になります。

強制したい他の要件がある場合(たとえば、常にDCが含まれている必要がある場合、またはOUとCNがない場合は少なくとも2つのDCがある場合など)、単一の正規表現を要求しすぎています。マルチステップのアプローチが必要になります。

于 2013-02-20T15:27:27.790 に答える
1

次の正規表現は、2回以上一致し(2文字のAz、等しい、1つ以上の文字A-z0-9)、それぞれの間にコンマがあります。

^[A-Za-z]{2}=[A-Za-z0-9]+(,[A-Za-z]{2}=[A-Za-z0-9]+)+$
于 2013-02-20T15:28:19.103 に答える