如何在JavaScript中编写重复的正则表达式模式
如何在JavaScript中为以下模式编写正则表达式: 1 | dc35 |海关| 3;od;CZY;GL | 2;ob;BNP;MT | 4;sd;ABC;MT | 5;ih;密度泛函;FR | 6;哦AQW;MT | 7;知识产权;可以MT | 8;op;汽车MT | 9;欧共体;SMO;GL | 10;做CZT;库| 在哪里如何在JavaScript中编写重复的正则表达式模式,javascript,regex,Javascript,Regex,如何在JavaScript中为以下模式编写正则表达式: 1 | dc35 |海关| 3;od;CZY;GL | 2;ob;BNP;MT | 4;sd;ABC;MT | 5;ih;密度泛函;FR | 6;哦AQW;MT | 7;知识产权;可以MT | 8;op;汽车MT | 9;欧共体;SMO;GL | 10;做CZT;库| 在哪里 第一部分1 | dc35 |是固定的 从第二部分开始,图案重复9次(即3;od;CZY;GL|2;ob;BNP;MT|等) 其中的第一个字符范围为2-11,不应重
- 第一部分
是固定的1 | dc35 |
- 从第二部分开始,图案重复9次(即
等)3;od;CZY;GL|2;ob;BNP;MT|
其中的第一个字符范围为2-11,不应重复。例如,
3
出现在第一个模式中,因此不应再次出现。有点棘手,但现在开始
正则表达式:/^1\\dc35\u custom(?:\\([2-9]| 1[01]);[a-z]{2};[a-z]{1,3};[a-z]{1,2}{9}$/
单元测试:(点击左边的“单元测试”)
我假设如下:
3;od;CZY;GL
的第一部分是一个介于2-11之间的数字,任何数字都不能重复我对此做了很多假设,但这里有一个漏洞:
1\|dc35_custom\|(([2-9]|10|11);[a-z]{2};[A-Z]{3};[A-Z]{2}\|){9}
工作原理
只是文字文本,转义垂直条运算符1\| dc35|u custom\|
将匹配2到11之间的任何数字([2-9]| 10 | 11)
将匹配两个小写字母[a-z]{2}
将匹配三个大写字母[A-Z]{3}
将匹配两个大写字母[A-Z]{2}
查找括号内整个序列的九个连续匹配项{9}
正如阿马丹指出的那样,它不会检查唯一性,因为这有点超出了正则表达式的用途。你能详细说明一下“等等”吗?如果无法在正则表达式中描述模式,请用文字描述该模式。因此,您希望正则表达式模式过滤掉一个数字,并保留所有其他内容不变?请给出所需最终结果的示例。您的输入字符串要么顺序错误,要么粘贴错误:
|3;od;CZY;GL|2;ob;BNP;MT
“无法重复”无法使用regexp执行位。您需要手动检查唯一性(通过.exec
循环或通过拆分和映射将其拉出)@Mario:它可以检查一件与另一件不同。它不能在循环中进行。下面的代码只测试非第一件与第一件不同,并且没有说明它们之间的不同。例如:1 | dc35 | u custom | 3;od;CZY;GL | 2;ob;BNP;MT | 2;sd;ABC;MT | 2;ih;DFT;FR | 2;oh;AQW;MT | 2;MT | 2;ip;can;MT;GL | 2;do;CZT;KU |
匹配。