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

标签 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 ]

关于我在这里缺少什么的任何提示?谢谢!

最佳答案

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

好的 Timothy Hawkins,您可以在正则表达式中将 \d+ 替换为 \d+(\.\d+)?,它也会捕获十进制数。

演示如下,

const string = '10mL 5mL 25 mL 12.5kg, 5.2mL';
const regex = /(\d+(\.\d+)?\s*(?:mL|g|gallon|kg|L|mg|patches))/g;
console.log(string.match(regex));

很抱歉延迟回复,由于工作量太大,大部分时间都不活跃:(

关于Javascript:如何提取字符串中的测量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54248204/

相关文章:

javascript - 更改幻灯片时视频幻灯片 javascript 暂停

javascript - 将正则表达式与 Javascript 结合使用

c# - 正则表达式嵌入 {{ 匹配

ruby - 用于匹配除包含 888/444、888/447 或 888/405 的文件名之外的所有文件名与 888 的正则表达式?

javascript - 使用 API 和 JavaScript 写入工作表 - CORS block

javascript - 缩放时使用 SVG 的一部分裁剪另一部分

javascript - 使用javascript打印文档

javascript - 如何使链接在 Twitter 推文中起作用? API + JSON

带 preg_match 的 PHP switch 语句

Java split 无法按字符串 "--"的预期工作