Как разделить и получить значение в строке - PullRequest
0 голосов
/ 11 февраля 2019

Привет, у меня есть строка типа "john ka [12345678]", "james james [12121212]" и т. Д. Как разделить строку и получить значение внутри "[]".Ожидаемый результат - 12345678 и 12121212, как это

Я пробовал метод разделения.

string1 = "john ka [12345678]"
string2 = "james james [12121212]"
// etc.

Выход должен быть 12345678 и 12121212

Ответы [ 4 ]

0 голосов
/ 11 февраля 2019

Два способа извлечения чисел

Демонстрация имеет два способа извлечения чисел в скобках: [...]

  1. Шаблон регулярного выражения и метод String .replace()
str.replace(/.+?\[([0-9]+?)\]/g, '$1 ')
Шаблон регулярного выражения, методы Array .split() и .filter()
str.split(/\[|\]/);

arr.filter(function(num) {
    return parseInt(num, 10);
});

Демо

var str = `john ka [12345678] and james james [12121212]`;

/*Regex replace()===================*/

var rgx = /.+?\[([0-9]+?)\]/g;

var R1 = str.replace(rgx, '$1 ');

console.log(R1);

/*Array split() and filter()========*/

var arr = str.split(/\[|\]/);

var R2 = arr.filter(function(num) {
  return parseInt(num, 10);
});

console.log(R2);
0 голосов
/ 11 февраля 2019
var result = string1.substring(string1.indexOf( '[' ) +1, string1.indexOf( ']' ));
0 голосов
/ 11 февраля 2019

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

string1.match(/(?<=\[)[0-9]+(?=\])/g)[0]

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

var string1 = "john [abc] ka [12345678]";

Вывод будет: 12345678

Редактировать: Поскольку lookbehind доступен только в браузерах, которые поддерживают ECMA2018, добавление другого решения без использования lookbehind:

var string1 = "john [abc] ka [12345678]";
new RegExp(/(?:\[)([0-9]+)(?=\])/, 'g').exec(string1)[1];
0 голосов
/ 11 февраля 2019

Попробуйте

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

Это должно вернуть массив всех строк в квадратных скобках, для первого вхождения просто второй элемент в результирующем массиве.

var value = matches[1];

Редактировать

Другие ответы указывают на использование разбиения и подстроки, однако это будет работать, но если доступны регулярные выражения, их следует использовать в этой ситуации, так как вы ищете совпадение с шаблоном "[" в качестве начала и "]"как конец.Этот подход является более надежным, так как он разумно ищет положение желаемой строки, а не предполагает ее.

...