Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Найти между несколькими скобками значения JavaScript

Здравствуйте. Пытаюсь вытащить значения, которые лежат в строке между скобками. Пока продвинулся не далеко. Вот что имею:
'{1}{2}{3}{4}'.match(/\{(.*)\}/)[1]; // 1}{2}{3}{4
Не могу понять почему выводится, 1}{2}{3}{4, когда я написал, чтоб выводилось всё, что находится между фигурными. В чем ошибка?


Ответ

Потому что спецсимвол (точка) равнозначен любому символу, включая скобки, и выборка происходит как раз согласно вашему выражению: все символы от самой первой открывающей скобки, до последней закрывающей.
Вы можете модифицировать ваше регулярное выражение, чтобы выбрать "первое значение, заключенное в скобки" (не обязательно число), указав вместо исключение закрывающей скобки [^\}]
'{1}{2}{3}{4}'.match(/\{([^\}]*)\}/)[1] // 1
Однако, если вам нужно получить массив всех чисел из строки строго данного формата, куда проще сделать следующим образом:
'{1}{2}{3}{4}'.match(/\d+/g); // ["1", "2", "3", "4"]
Регулярные выражения Online regex tester and debugger

Комментариев нет:

Отправить комментарий