Как мне надежно найти дроби и десятичные дроби в javascript - PullRequest
0 голосов
/ 20 февраля 2020

В) Я хочу иметь возможность анализировать строку в js и выводить части строки, которые являются числом или дробью.

например: "1.5 litres 1/4 cup"

Примечание: Я уже выяснил, как получить целые числа и десятичные числа из приведенной ниже строки примера, но не представления дроби .

В настоящее время я использую что-то вроде этого:

const originalString = "1.5 litres 1/4 cup";
var number_regex = /[+-]?\d+(\.\d+)?/g;
var matches = [];
var match;

// FIX - does this ever actually get stuck ?
// replace this with non-while loop from article: http://danburzo.ro/string-extract/
while ((match = number_regex.exec(originalString)) !== null) {
  matches.push({
    original: match[0],
    newVal: ''
  });
}
console.log(matches)

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать это для извлечения каждого числа в виде массива строк

const input = `Take 1.5 litres 1/4 cup of sugar
    and 2ml or 2/3 teaspoon or salt
    then take 5 litres of 2.5% vinegar`

const regex = /[+-]?\d+(?:[\.\/]?\d+)?/gm
console.log(
  [...input.matchAll(regex)].map(a => a[0])
)
// returns ["1.5", "1/4", "2", "2/3", "5", "2.5"]
...