Как получить числа из данных с помощью регулярных выражений? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь получить цифры после букв и до знаков доллара. Я получаю «ноль» в качестве вывода при запуске моего кода.

Например: номера 2.1315, 1.94733, 1.07511 из VOO 2.1315 $ 262.67 $ 86.88 $ 559.88DIS 1.94733 104,45 $ 27,77 $ 203,40IWM 1,07511 122,55 ...

var data = "VOO2.1315$262.67$86.88$559.88DIS1.94733$104.45$27.77$203.40IWM1.07511$122.55$14.98$131.75DAL5$24.04-$44.26$120.19XOM2$42.46-$18.40$84.92VYM1$77.59$7.15$77.59SBUX1.19403$76.64$15.12$91.51"; 
var regex = /^\d+\.\d{0,2}$/g;
var found = data.match(regex);
console.log(found);
console.log(data);

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Я сделал приведение из строки в число, если вам не нужно, то удалите .map(Number)

Смотри утверждения, что оно доступно в спецификации ECMA-262

const data = 'VOO2.1315$262.67$86.88$559.88DIS1.94733$104.45$27.77$203.40IWM1.07511$122.55$14.98$131.75DAL5$24.04-$44.26$120.19XOM2$42.46-$18.40$84.92VYM1$77.59$7.15$77.59SBUX1.19403$76.64$15.12$91.51';
const regex = /(?<=[a-z])\d+\.\d+(?=\$)/gi;

const numbers = data
  .match(regex)
  .map(Number);

console.log(numbers);

Старые браузеры не делают Поддержка просмотра в регулярном выражении JavaScript. Вы должны использовать два регулярных выражения

const data = 'VOO2.1315$262.67$86.88$559.88DIS1.94733$104.45$27.77$203.40IWM1.07511$122.55$14.98$131.75DAL5$24.04-$44.26$120.19XOM2$42.46-$18.40$84.92VYM1$77.59$7.15$77.59SBUX1.19403$76.64$15.12$91.51';
const regex = /[a-z](\d+\.\d+)\$/gi;

const numbers = data
  .match(regex)
  .map(item => item.match(/\d+\.\d+/))
  //  or you can use slice instead of regex
  // .map(item => item.slice(1, -1))
  .map(Number);

console.log(numbers);

вывод:

Array(25) [ 2.1315, 1.94733, 1.07511 1.19403 ]
0 голосов
/ 21 апреля 2020

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

found = data.match(/[a-zA-Z]\d+\.\d+/g).map(m => Number(m.substr(1)));

found - это массив значений, которые вы ищете.

Получить избавьтесь от приведения Number(), если вам нужны только строковые значения.

...