正则表达式"all three in any order and nothing more"



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

1) 只有当它有三个单词时才算数学2) 不以分号(;)分隔或分隔3) 按任何顺序4) 所有单词都应包含在内,否则将与不匹配

我试过这个:

^(?=(.*;|)one)(?=(.*;|)two)(?=(.*;|)three).*$

但不知何故,它模拟了oneasfafasfsaf等变体;二三错误

求你了,救命!

附言:有时需要三个以上,但我想了解核心

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

^(?=.*?(one))(?=.*?(two))(?=.*?(three))(?:(?:1|2|3);?){3}$

请参阅regex101.com上的测试(右侧的说明);Regex常见问题

(one|two|three);?(?!1)(one|two|three);?(?!2)(one|two|three)

试试这个。请参阅演示。

http://regex101.com/r/hQ1rP0/41

最新更新