Как я могу получить значение из строки, которая имеет значения внутри квадратной скобки []? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть строка, которая приходит ко мне так: "[value1] [value2]"

Как я могу получить значения, заключенные в квадратные скобки?ПРИМЕЧАНИЕ: если строка похожа на эту «[] [value2]», первая скобка с пробелом должна возвращать мне «» ...

Я пробовал много регулярных выражений и разбиений, но ни однойworkd.

это последнее, что я попробовал:

var pattern = /[([^]]*)]/g; 
var res = pattern.exec(datos[0].title); 

Еще один, который я попробовал:

var res = datos[0].title.match(/^.*?[([^]]*)].*?[([^]]*)]/gm);

, но никто не делает то, что мне нужно ...

Я пытаюсь найти способ, "который делает все это", регулярное выражение, которое получает что-нибудь в квадратных скобках (даже пробелы)

Ответы [ 5 ]

0 голосов
/ 14 ноября 2018
const getItems = (fullItemsString) => {
    let items = fullItemsString.replace(/\[/g, "").split("]");
    items.pop()

    return items;
}

Использование:

let items = getItems("[2][][34][1]");

результат: ['2', '', '34', '1']

0 голосов
/ 14 ноября 2018

Вы можете легко расширить его для большего количества значений.

const string = "[value1][value2]";

const removeBrackets = (stringWithBrackets) => {
  return stringWithBrackets.split("][").map(s => s = s.replace(/\[*\]*/g, ""));
};

const [value1, value2] = removeBrackets(string);

console.log(value1, value2);
0 голосов
/ 14 ноября 2018

Вы можете использовать это регулярное выражение и метод грубой силы, чтобы извлечь содержимое.

var regex = /\[(.*?)\]/g;

var value = "[value1][value2][]";

var matches = value.match(regex);

var matchedValues = matches.map(match => {
	return match.replace("[", "").replace("]", "");
}).join(" ");

console.log(matchedValues.toString())
0 голосов
/ 14 ноября 2018

Вы могли бы просто сделать это:

var str = "['value1']['value2']";
var value1 = str.split("]")[0].split("[")[1];
var value2 = str.split("]")[1].split("[")[1];
console.log(str);
console.log(value1);
console.log(value2);
0 голосов
/ 14 ноября 2018

Как сказано в @HarryCutts, вам не нужно регулярное выражение:

var x = "[value1][value2]";
console.log( x.slice(1,-1).split('][') );
...