Javascript:如何提取字符串中的度量值

时间:2019-01-18 05:32:27

标签: javascript regex

我正在尝试提取字符串中的测量值。

这是我目前的方法:

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 :(得分:3)

尝试多次匹配正则表达式模式\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);

答案 1 :(得分:3)

您要查找的功能是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));