#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я использую регулярное выражение с JavaScript и хочу вернуть содержимое в квадратных скобках (включая сами скобки) в следующей строке:
var str = '##abde[fgh]ijk[mn]op';
var brackets = str.match(/[.{1,}]/g); //["[fgh]ijk[mn]"]
Я хотел brackets
вернуть ["[fgh]", "[mn]"]
, а не содержимое (ijk)
за скобками. Как это можно исправить? Спасибо.
Ответ №1:
Проблема здесь в том, что .
соответствует любому символу (включая квадратные скобки).
Вы можете использовать класс символов, например:
[^]]
для соответствия любому символу, кроме квадратных скобок.
Так что это должно сработать для вас:
str.match(/[[^]]{1,}]/g);
Лучше было бы так:
str.match(/[[^]] ]/g);
Это немного аккуратнее, поскольку {1,}
семантически эквивалентно
.