Совпадение числа в квадратных скобках и получение оставшейся строки - PullRequest
0 голосов
/ 07 января 2020

У меня есть строка, подобная следующей

value[0]
  1. Я хочу проверить, содержит ли строка квадратные скобки.
  2. Если да, то получите число, которое в приведенном выше случае 0
  3. Получить остаток строки без скобок и число, которое в вышеприведенном случае равно value
var matches = this.key.match('/[([0-9]+)]/');  // 1 
if (null != matches) {
    var num = matches[1]; // 2
}

Как можно достичь третьей точки?

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Используйте другую группу захвата, чтобы получить часть строки перед квадратными скобками.

Кроме того, регулярное выражение не должно заключаться в кавычки.

var key = 'value[0]'
var matches = key.match(/(\w+)\[([0-9]+)\]/);
if (null != matches) {
  var variable = matches[1];
  var num = matches[2];
}
console.log(`variable = ${variable}, index = ${num}`);
0 голосов
/ 07 января 2020

Вам нужно удалить заключающие в кавычки и убрать скобки.

Кроме того, вы можете использовать другую группу catch для получения строки. Первая группа уловов должна соответствовать всему, что не является скобкой. Используйте запасной массив в случае, если совпадение не найдено, и используйте деструктуризацию, чтобы получить строку и номер. Если строка / число undefined, совпадения нет.

var key = 'value[0]';

var [, str, number] = key.match(/([^\[]+)\[([0-9]+)\]/) || [];

console.log({ str, number });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...