Javascript: Как извлечь измерения в строку - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь извлечь измерения в строку.

Это мой текущий подход:

const string = '10mL 5mL';
const regex = `([0-9]*mL)|([0-9]*g)|([0-9]*gallon)|([0-9]*kg)|([0-9]*L)|([0-9]*mg)|([0-9]*patches)`;
console.log(string.matches(regex));

Так что я ожидаю, что результат будет ['10mL', '5mL']. Когда я проверяю логи, он извлекает только первые 10mL

[ '10mL',
  '10mL',
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  undefined,
  index: 0,
  input: '10mL 5mL',
  groups: undefined ]

Какие-нибудь советы о том, что мне здесь не хватает? Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Функция, которую вы ищете: match, а не matches. Также вы можете написать свое регулярное выражение в такой компактной форме, как

/(\d+\s*(?:mL|g|gallon|kg|L|mg|patches))/g

Попробуйте этот код JS,

const string = '10mL 5mL 25 mL';
const regex = /(\d+\s*(?:mL|g|gallon|kg|L|mg|patches))/g;
console.log(string.match(regex));
0 голосов
/ 18 января 2019

Попробуйте сопоставить шаблон регулярного выражения \d+\s*\w+ несколько раз:

var re = /\d+\s*\w+/g;
var input = '10mL 5mL';
var m;
var output = [];

do {
    m = re.exec(input);
    if (m) {
       output.push(m[0]);
    }
} while (m);

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