> ';x=1024;y=768'.match(/^(?:;x=(?<x>.+?)|;y=(?<y>.+?))*$/)
[
  ';x=1024;y=768',
  undefined,
  '768',
  index: 0,
  input: ';x=1024;y=768',
  groups: [Object: null prototype] { x: undefined, y: '768' }
]


此正则表达式仅捕获y。我想同时捕获xy。源字符串可以按任意顺序包含可选参数。即


';x=1024;y=768'.match(REGEX)应产生组:{x: '1024', y: '768'}
';y=768;x=1024'.match(REGEX)应产生组:{x: '1024', y: '768'}
';y=768'.match(REGEX)应产生组:{y: '768'}(可选地x: undefined


有什么方法可以使用JavaScript的regex引擎完成此操作,还是我必须求助于老式的解析?

无需假设数字。这些是通用键值对。

最佳答案

只要设置了^;x=(?<x>\d+)|;y=(?<y>\d+)$标志,就可以使用此g了。
如果它们并非总是数字,请将\d更改为您知道可以使用的其他预定字符组。

关于javascript - 替代JavaScript中的分支重置组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59557352/

10-13 07:52