Regex RexEx将正则表达式与排列和选择的混合匹配
我想检查我的学生是否正确回答了这个问题: 我们希望有一个从1到6的数字和一个从a到d的字母,可以写小或大。比如1d,2A,4b 我想让我的学生使用的正则表达式应该类似于Regex RexEx将正则表达式与排列和选择的混合匹配,regex,permutation,mixing,Regex,Permutation,Mixing,我想检查我的学生是否正确回答了这个问题: 我们希望有一个从1到6的数字和一个从a到d的字母,可以写小或大。比如1d,2A,4b 我想让我的学生使用的正则表达式应该类似于[1-6][a-dA-D]或[123456][abcdABCD]或这两者的混合以及第二个的所有排列 在我的研究中,我发现对于排列: ^(?:([1-4])(?!.*\1)){4}$ 它自己工作(也不需要^$),但是当我将它与一个choices操作符(|)结合使用时,它允许像[111111][a-dA-D]这样的重复,这不是我想要
[1-6][a-dA-D]
或[123456][abcdABCD]
或这两者的混合以及第二个的所有排列
在我的研究中,我发现对于排列:
^(?:([1-4])(?!.*\1)){4}$
它自己工作(也不需要^$
),但是当我将它与一个choices操作符(|
)结合使用时,它允许像[111111][a-dA-D]
这样的重复,这不是我想要的
这就是我一直在尝试的:
[\[]((?:([1-6])(?!.*\1)){6}|[1]\-[6])[\]][\[]((?:([a-dA-D])(?!.*\1)){8}|([a][\-][d][A][\-][D]|[A][\-][D][a][\-][d]))[\]]
测试数据:
[1-6][A-Da-d]
[123456][a-dA-D]
[654321][AaBbCcDd]
[241365][abcdABCD]
为了验证
regex
,我建议运行一些单元测试来验证您所期望的。。。至少我会有:
- 验证它是否为有效正则表达式的测试。编辑它
- 验证它与简单用例匹配的测试<代码>1A,
1B
- 针对无效用例进行验证的测试,如
,A1
,B1
,^d
88D