正则表达"所有三个以任何顺序,而不是更多"

use*_*347 3 regex

我需要创建一个符合以下条件的reg表达式:

1)mathing只有当它有三个单词时2)没有用分号分隔或分隔(;)3)任何顺序4)所有的单词都应该包括在内,否则它将不匹配

我试过这个:

^(?=(.*;|)one)(?=(.*;|)two)(?=(.*;|)three).*$
Run Code Online (Sandbox Code Playgroud)

但不知何故,它会变形像oneasfafasfsaf;两个;三个错误

请帮忙!

PS有时它需要超过三个,但我想了解核心

Jon*_*y 5 6

您可以捕获所有3并检查每个存在,然后,如果字符串仅由3个单词组成:

^(?=.*?(one))(?=.*?(two))(?=.*?(three))(?:(?:\1|\2|\3);?){3}$
Run Code Online (Sandbox Code Playgroud)

请参阅regex101.com上的测试(右侧说明); 正则表达式常见问题