2015-04-23 33 views
0

我想检查我的学生获得的正则表达式这个问题正确的混合物:RexEx匹配一个正则表达式与排列和选择

我们希望有一个从1数到6后记信从a到d可以写成小或大。所以像1D,2A,4B,...

我想从我的学生都应该像这两个[1-6][a-dA-D][123456][abcdABCD]或混合物,和第二者的所有排列的正则表达式。

在我的研究,我发现了排列this answer

^(?:([1-4])(?!.*\1)){4}$ 

,它的工作原理是它自己(以及没有^$),但是当我有一个选择,运营商结合起来(|),它允许以及像[111111][a-dA-D]这样的重复,这不是我想要的。

这是我尝试直到尚未:

[\[]((?:([1-6])(?!.*\1)){6}|[1]\-[6])[\]][\[]((?:([a-dA-D])(?!.*\1)){8}|([a][\-][d][A][\-][D]|[A][\-][D][a][\-][d]))[\]] 

TESTDATA:

[1-6][A-Da-d] 
[123456][a-dA-D] 
[654321][AaBbCcDd] 
[241365][abcdABCD] 
+0

你能使你的问题更具有表现力,加上要针对其运行正则表达式的一些样品示例和测试数据? –

+3

这似乎是验证答案的不好方法。仅仅通过一组测试用例来验证答案就会更容易和更清晰。 – beerbajay

+0

要么根据一组测试用例验证它,要么自己分析正则表达式来验证它 - 分配很简单,所以这种验证应该很简单。检查排列组合对于正则表达式来说并不适合。 –

回答

0

为了验证regex我会建议运行一些单元测试他们验证您所期待的东西。 ..至少我会有:

  • 一个测试,验证它是一个有效的正则表达式。编译它。
  • 验证它的测试与简单用例相匹配。 1A1B
  • 测试,验证对无效使用情况下,像A1B1^d88D