【发布时间】:2021-10-01 19:54:00
【问题描述】:
我正在尝试匹配这样的字符串:test0,id=28084 type=high,18765003 138456387
我正在使用这个正则表达式:
const str = `test0,id=28084 type=high,18765003 138456387`;
console.log(str.match(/\s*([a-zA-Z0-9\-_.]+)\s*,\s*([a-zA-Z0-9\-_.]+\s*=\s*[a-zA-Z0-9\-_.]+\s*)*\s*,\s*([0-9.]+)\s+([0-9]+)\s*/))
但我没有得到id 部分。只需type=high。
感谢任何帮助。
编辑:我看到我只会得到最后一个捕获组。但问题中没有说明,我需要在字符串中的那个点有动态数量的字段。我想知道是否有其他方法可以做到这一点。
【问题讨论】:
-
如果您使用 * 或 + 量词重复捕获组,您将仅获得该组的最后一个匹配项。另见stackoverflow.com/questions/17393683
-
@horcrux 哦,我明白了。知道如何使用正则表达式获得我想要的功能吗?
-
手动重复同一组(例如regex101.com/r/Olhe18/1)。
-
@horcrux 如果我需要它有 N 个字段怎么办?
标签: javascript regex