RegExp:匹配' 3'列表中的单词,不重复

时间:2016-01-24 09:25:27

标签: javascript regex

我正在做一个要求用户写的应用程序,例如,列表中的三个单词(顺序并不重要)。

我可以尝试这样的事情:

\^ [ itemA | itemB | itemC | itemD | item E | item F] {3}

但显然,用户可以写相同项目的三倍。有没有办法使用正则表达式来表达它并使用单个"匹配"来评估它。功能

我当然使用JavaScript。

谢谢你们!

对不起,让我澄清一下。

我有以下屏幕:

Example

因此,用户有7个可能的答案,他必须写三个答案。

当然,这个"屏幕"有很多类型的问题,其中正则表达式很好地评估它,但在这一个,我不知道它是否适用。

谢谢你们。

1 个答案:

答案 0 :(得分:1)

要检查我是否理解,您正在尝试验证:

  1. 用户恰好输入了三个项目
  2. 每个项目都是预定义列表的成员
  3. 每个项目都是独一无二的吗?
  4. 这不适合正则表达式。您可以满足前两个要求,但使用JavaScript或类似方法直接执行第三个要求要简单得多。

    如果你真的想这样做,你可以这样做:

    ^(itemA|itemB|itemC|itemD|item E|itemF) (?!\1)(itemA|itemB|itemC|itemD|item E|itemF) (?!\1)(?!\2)(itemA|itemB|itemC|itemD|item E|itemF)

    这使用negative lookahead

    1. 第一项必须与itemA-itemF
    2. 相匹配
    3. 第二项必须首先匹配第一项是什么,并且还匹配itemA-itemF
    4. 第三项不得与第一项匹配,与第二项不匹配,也与itemA-itemF匹配。