Подтвердить что ты не робот

Javascript - возвращает строку между квадратными скобками

Мне нужно вернуть только текст, заключенный в квадратные скобки в строке. У меня есть следующее регулярное выражение, но это также возвращает квадратные скобки:

var matched = mystring.match("\\[.*]");

Строка будет содержать только один набор квадратных скобок, например:

Some text with [some important info]

Я хочу, чтобы он содержал "некоторую важную информацию", а не "важную информацию", которую я сейчас получаю.

4b9b3361

Ответ 1

Используйте группировку. Я добавил ?, чтобы сделать совпадение "ungreedy", поскольку это, вероятно, то, что вы хотите.

var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}

Ответ 2

Так как javascript не поддерживает захваты, вы должны взломать его. Рассмотрим эту альтернативу, которая использует противоположный подход. Вместо того, чтобы захватить то, что находится внутри скобок, удалите то, что вне их. Поскольку всегда будет только один набор скобок, он должен работать нормально. Обычно я использую этот метод для удаления начальных и конечных пробелов.

mystring.replace( /(^.*\[|\].*$)/g, '' );

Ответ 3

Вы пытались захватить парсеры:

("\\[(.*)]");

Это должно вернуть шаблон в скобках в виде захваченного совпадения в возвращаемом массиве

Ответ 4

Вы не можете. Javascript не поддерживает lookbehinds.

Вам придется либо использовать группу захвата, либо обрезать скобки.

Кстати, вы, вероятно, не хотите жадный .* в своем регулярном выражении. Попробуйте следующее:

"\\[.*?]"

Или лучше, это:

"\\[[^\\]]*]"