Regex получить весь контент в скобках - PullRequest
0 голосов
/ 18 февраля 2019

Здравствуйте, у меня есть эта строка ["type",[129,167,85,83]], которую я хочу извлечь только: [129,167,85,83] с использованием regexpr

Я попробовал следующее:

var re = new RegExp('",(.*)]');
var r  = '["type",[129,167,85,83]]'.match(re);
if (r)
    console.log(r);

Но это дает мнеследующий результат: ",[129,167,85,83]] пожалуйста, как я могу это исправить?

Ответы [ 6 ]

0 голосов
/ 18 февраля 2019

Вот, пожалуйста.

Хитрость заключалась в том, что добавление (?<=,) приведет к запятой.

Добавлен тест ниже, посмотрите на себя

var regex = /(?<=,)(\[.*?\])/g;
var json = '["type",[129,167,85,83]]';
var r  = json.match(regex);

console.log(r);
0 голосов
/ 18 февраля 2019

Вы можете .split() символов, за которыми следует [ и закрывая ], получить элемент по индексу 1

let str = `["type",[129,167,85,83]]`;
let [,match] = str.split(/.(?=\[)|\]$/);

console.log(match);
0 голосов
/ 18 февраля 2019

Вы можете использовать JSON.parse

let str='["type",[129,167,85,83]]';
let arr=JSON.parse(str);
arr.shift();
let new_str=JSON.stringify(arr.flat());
console.log(new_str);
0 голосов
/ 18 февраля 2019

попробуйте var re = new RegExp('(?<=",)(.*)(?=])')

0 голосов
/ 18 февраля 2019

Не обязательно лучшее решение, но самое быстрое, где вы находитесь сейчас.Match создает массив - вам нужен второй элемент:

var re = new RegExp('",(.*)]');
var r  = '["type",[129,167,85,83]]'.match(re);
if (r) console.log(r[1])
0 голосов
/ 18 февраля 2019

Вероятно, лучше всего использовать JSON.parse.Я сделал небольшой пример для вас ниже:

var course = '["type",[129,167,85,83]]';
var resultArray = JSON.parse(course);
console.log(resultArray[1]); // 129,167,85,83
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...