我正在尝试提取字符串中的测量值。
这是我目前的方法:
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 ]
关于我在这里缺少什么的任何提示?谢谢!
答案 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));