使用AND

时间:2016-11-28 07:38:06

标签: javascript regex string pattern-matching and-operator

我想从字符串中提取命令。我需要的命令包含特定的ID 124和123以及特定的标志od和xy。所以我想提取所有contained my ids [123|124] my flags[od|xy]的命令。

字符串:Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;
正则表达式:Z[^;]*?(od|xy)[^;]*?;
要求输出:[Z124xy54; Z123od33; Z123od343;]
但当前输出:[Z123xy54; Z123od33; Z123od343; Z251od541;]

我知道为什么会发生这种情况,但不知道如何解决这个问题。任何人都可以帮忙

另一个样本:

Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;Z123od343;
Z124xy54;Z123od33;Z123od343;Z251od541;Z251ab541;Z123od343X

1 个答案:

答案 0 :(得分:1)

使用:

(Z(?:123|124)(?:xy|od).*?(:?;|$))
  1. 从Z =>开始; (Z)
  2. 匹配123或124而不捕获组=> (?:123 | 124)
  3. 匹配zy或od而不捕获组=> (?:XY | OD)
  4. 首先匹配除换行之外的任何内容;或没有捕获组的字符串结尾=> (:?; | $)
  5. 工作演示:https://regex101.com/r/AugDZT/2