Как создать регулярное выражение для проверки Distinguished Name в JavaScript

Мне нужно написать регулярное выражение на JavaScript, которое будет проверять различные форматы Distinguished Name (DN). Я пытался создать свое, но оно работает не очень хорошо.

Вот что я пробовал:

const dnPattern = /([A-z0-9=]{1}[A-z0-9]{1})*[,??]/;

Я менял этот паттерн разными способами, но результат все равно не устраивает.

Примеры DN, которые должны проходить проверку:

CN=company,CN=example,O=organization,C=ru
CN=user1234,CN=employees,O=company,C=ru  
C=ru
OU=department,CN=service,O=corp,C=us

Как правильно написать регулярное выражение для валидации всех возможных вариантов Distinguished Name? Буду благодарен за помощь с корректным паттерном.

я недавно делал то же самое и наткнулся на эту проблему. DN содержит пробелы и спецсимволы, так что обычные регулярки не катят. Использовал /^[A-Z]{1,4}=[^,]+(,[A-Z]{1,4}=[^,]+)*$/i - здесь атрибуты до 4 символов (как MAIL), а значения любые кроме запятой. Но помни - в реальности DN может содержать экранированные запятые и кавычки, так что для продакшена лучше взять готовую библиотеку.

Твой паттерн слишком простой. DN имеет четкую структуру - атрибут=значение, разделенные запятыми. Попробуй ^([A-Z]{1,2}=[^,=]+)(,[A-Z]{1,2}=[^,=]+)*$. Этот регекс проверяет, что каждый компонент начинается с 1-2 заглавных букв (CN, O, C, OU), потом идет знак равенства и значение без запятых. Не забудь ^ и $ для проверки начала и конца строки. Сам использовал похожий подход в корпоративных проектах.

А зачем писать с нуля? DN регулярки - это боль из-за экранирования и кучи стандартов. Возьми ldapjs или сделай простой парсер. Или тебе конкретно regex нужен?