用正则表达式查找任何顺序的单词

Dan*_*lva 6 regex

考虑到这些条目......

red yellow green
yellow green red
green red yellow 
other red yellow 
other green red
Run Code Online (Sandbox Code Playgroud)

我可以按任意顺序(前3行)匹配红色,黄色,绿色:

^(^red|^yellow|^green) (red|yellow|green) (red$|yellow$|green$)$
Run Code Online (Sandbox Code Playgroud)

请注意,我需要找到这些词,没有别的.但是当我有更多的话时,表达式会增长很多.

例如(有4个字)

^(^red|^yellow|^green|^black) (red|yellow|green|black) (red|yellow|green|black) (red$|yellow$|green$|black$)$
Run Code Online (Sandbox Code Playgroud)

我的问题是:还有其他更简单的方法来使用正则表达式吗?

Ale*_*hov 3

如果您可以容忍red red yellow(好吧,我认为您可以像这样的正则表达式匹配行)那么您需要的正则表达式是

^(red|yellow|green)( (red|yellow|green))*$
Run Code Online (Sandbox Code Playgroud)

您可以在那里测试它: https: //regex101.com/r/fC3pM3/1(它也有很好的解释)