正则表达式:任意顺序的指定字词

时间:2019-03-12 07:52:38

标签: javascript regex

我不擅长正则表达式,试图制作2个正则表达式。

Regex1:

  

所有指定的单词以任何顺序排列,但无其他。 (重复   允许)。

Regex2:

  

所有指定的单词以任何顺序排列,但无其他。   (不允许重复)。

单词

aaa, bbb, ccc

字符串

aaa ccc bbb
aaa ccc
aaa bbb ddd ccc
bbb aaa bbb ccc

Regex1 将上述字符串评估为:

true -> all word present in any order
false -> bbb is missing
false -> unknown word 'ddd'
false -> repetition not allowed

Regex2 将上述字符串评估为:

true -> all word present in any order
false -> bbb is missing
false -> unknown word 'ddd'
true -> all word present in any order and repetition is allowed

我的尝试

/^(?=.*\baaa\b)(?=.*\bbbb\b)(?=.*\bccc\b).*$/

出于学习目的,请详细说明。

1 个答案:

答案 0 :(得分:4)

没有重新定位 regex101

^(?:(aaa|bbb|ccc)(?!.*?\b\1) ?\b){3}$

并且带有重新定义 regex101

^(?=.*?\baaa)(?=.*?\bbbb)(?=.*?\bccc)(?:(aaa|bbb|ccc) ?\b)+$

另外两个想法。右侧的regex101中的正则表达式说明。