Guedda
@Guedda
Начинающий front-end разработчик

Как правильно сформировать регулярное выражение и вытащить нужные значения?

Добрый день, уважаемые.
У меня очень трудно с регулярными выражениями, поэтому я очень надеюсь на вашу помощь.
Ко мне приходит строка с ошибками. Выглядит она так:
"Error.0.Value : This is error for item 0.\r\nError.1.Value : This is error for item 1 and this item is exist."

Мне необходимо, чтобы в результате сформировался объект вида:
{
  "someinput[0]": "This is error for item 0.",
  "someinput[1]": "This is error for item 1 and this item is exist."
}

ну и так далее. от \r\n я избавляюсь при помощи .split("\r\n");
Но вот что делать дальше и как распарсить строку
Error.0.Value : This is error for item 0.
мне не понятно. Я понимаю, что вопрос совершенно новичковый и решение лежит на поверхности, но я не могу его найти.

Заранее благодарен за ответы.
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
evgeniy8705
@evgeniy8705
Повелитель вселенной
const str = "Error.0.Value : This is error for item 0.\r\nError.1.Value : This is error for item 1 and this item is exist.";

let result = {};

str.split("\r\n").forEach(item => Object.assign(result, { [`someinput[${item.split(" : ")[0].match(/\d+/)}]`]: item.split(" : ")[1] }));

/*
{
  "someinput[0]": "This is error for item 0.",
  "someinput[1]": "This is error for item 1 and this item is exist."
}
*/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
keslo
@keslo
var msg = "Error.0.Value : This is error for item 0.\r\nError.254.Value : This is error for item 1 and this item is exist.";

var result = {};
msg.split("\r\n").map((item, i) => { result["someinput[" +item.split(" : ")[0].match(/\d+/)[0]+ "]"] = item.split(" : ")[1]} )

console.log(result);

/*
{
  someinput[0]:"This is error for item 0.",
  someinput[254]:"This is error for item 1 and this item is exist."
}
*/
Ответ написан
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
/Error\.\d+\.Value :(.+?)(?:\\r|\\n|$)/gim
https://regex101.com/r/cpffip/1
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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