識別名の構文は RFC 4514 (RFC 2253 を置き換える) で規定されており、正規表現で完全に解析できるわけではありません。OpenLDAP には、価値のある解析と検証を行ういくつかのライブラリ関数が含まれています。ただし、簡単な正規表現が必要な場合は、次の Posix ERE を使用でき([^\,]|\\.)*
ます(?:[^\,]|\\.)*
。
これは、「 と 以外の任意の文字列に一致,
し、場合によってはと の任意の 1 文字\
のペアも含む」ことを意味します。\
これは実際の LDAP 仕様のスーパーセットであり、\
その後に 16 進数またはいくつかの特殊文字の 1 つ以外が続くことを許可しないため、多くの無効な DN コンポーネントを受け入れますが、すべての有効な DN コンポーネントを受け入れる必要があります。そして、DN コンポーネントを区切るコンマを飲み込むことは決してないと私は信じています。
これは、grep を使用した bash での簡単なテストです。
$ echo 'CN=lastName\, firstName,OU=Users - XYZ,OU=Users-Test Place,OU=UsersAll,DC=Dom1,DC=Dom2' |
> grep -oE '([^\,]|\\.)*'
CN=lastName\, firstName
OU=Users - XYZ
OU=Users-Test Place
OU=UsersAll
DC=Dom1
DC=Dom2