如何在JavaScript中编写重复的Regex模式

时间:2015-05-14 01:03:41

标签: javascript regex

如何在JavaScript中为以下模式编写正则表达式:

  

1个| dc35_custom | 3; OD; CZY; GL | 2; OB; BNP; MT | 4; SD; ABC; MT | 5; IH; DFT; FR | 6; OH; AQW; MT | 7; IP ; CAN; MT | 8;运算; CAR; MT | 9; EC; SMO; GL | 10;做; CZT; KU |

,其中

  • 第一部分1|dc35_custom|已修复。
  • 第二部分开始,模式重复9次(即3;od;CZY;GL| 2;ob;BNP;MT|,依此类推。

其中第一个字符的范围是2-11,不应重复。例如,3出现在第一个模式中,因此不应再次出现。

2 个答案:

答案 0 :(得分:2)

我对此做了很多假设,但这里有一个问题:

1\|dc35_custom\|(([2-9]|10|11);[a-z]{2};[A-Z]{3};[A-Z]{2}\|){9}

如何运作

  • 1\|dc35_custom\|只是文字文本,可以转义垂直条操作符
  • ([2-9]|10|11)将匹配2到11之间的任何数字。
  • [a-z]{2}将匹配两个小写字母
  • [A-Z]{3}将匹配三个大写字母
  • [A-Z]{2}将匹配两个大写字母
  • {9}查找括在括号中的整个序列的九个连续匹配

正如Amadan指出的那样,它不会检查唯一性,因为这有点超出正则表达式的范围。

答案 1 :(得分:0)

有点棘手,但你去了

正则表达式:/^1\|dc35_custom(?:\|([2-9]|1[01]);[a-z]{2};[A-Z]{1,3};[A-Z]{1,2}){9}\|$/

和单元测试:https://regex101.com/r/lU6sJ6/2(点击'单元测试'在左侧)

我假设以下内容:

  1. 第一组将永远是相同的
  2. 模式3;od;CZY;GL的第一部分是2-11之间的数字,无数字可以重复
  3. 第二部分是小写字母a-z,正好是其中两个
  4. 第三部分是大写字母A-Z,介于1和3之间({1,3},你可以将它改为{3}如果确切的话)
  5. 第四个和最后一个部分是1到2个大写字母A-Z