EdMSL
@EdMSL
Free Developer

Как правильно написать регулярку для многострочного текста по шаблону ключ=значение?

Нужна регулярка, которая будет проверять многострочную строку из поля TextArea.
Шаблон прост:
ключ1=значение1
ключ2=значение2
ключ3=значение3

  • Разделитель строго = (знак "равно").
  • Ключ и значение могут содержать любые символы кроме разделителя.
  • Перед и после разделителя не должно быть пробелов.
  • Не должно быть двух разделителей подряд.
  • Не должно быть больше одного разделителя в каждой подстроке.
  • Каждая подстрока начинается и заканчивается любым символом кроме разделителя.

Я написал такую регулярку:
https://regex101.com/r/HdI3Wx/1
Используется так:
const result = /^[^=][^=]*(?<=\S)=[^\s=][^=]*$/gm.test(value);

Но в ней есть как минимум одна проблема. Если написать так:
текст
ключ=значение

так:
ключ=значение
текст
ключ=значение

или так:
ключ=значение
текст

то это будет валидным результатом.
Вся суть в том, что в дальнейшем строка преобразуется в объект, разбиваясь сначала на подстроки по разделителю "\n", затем на ключ\значение по разделителю "=".

Как правильно написать выражение?
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы