Нужна регулярка, которая будет проверять многострочную строку из поля TextArea.
Шаблон прост:
ключ1=значение1
ключ2=значение2
ключ3=значение3
- Разделитель строго = (знак "равно").
- Ключ и значение могут содержать любые символы кроме разделителя.
- Перед и после разделителя не должно быть пробелов.
- Не должно быть двух разделителей подряд.
- Не должно быть больше одного разделителя в каждой подстроке.
- Каждая подстрока начинается и заканчивается любым символом кроме разделителя.
Я написал такую регулярку:
https://regex101.com/r/HdI3Wx/1
Используется так:
const result = /^[^=][^=]*(?<=\S)=[^\s=][^=]*$/gm.test(value);
Но в ней есть как минимум одна проблема. Если написать так:
текст
ключ=значение
так:
ключ=значение
текст
ключ=значение
или так:
ключ=значение
текст
то это будет валидным результатом.
Вся суть в том, что в дальнейшем строка преобразуется в объект, разбиваясь сначала на подстроки по разделителю "\n", затем на ключ\значение по разделителю "=".
Как правильно написать выражение?