我需要创建一个符合以下条件的reg表达式:
1)只有当它有三个单词时
2)未用分号分隔或分隔(;)
3)以任何顺序
4)应包括所有单词,否则不匹配
我试过这个:
^(?=(.*;|)one)(?=(.*;|)two)(?=(.*;|)three).*$
但不知何故,它会变形像oneasfafasfsaf;两个;三个
这是错的
请帮忙!
附:有时它需要超过三个,但我想了解核心
解决方法
你可以
capture全部3并检查每个存在,然后,如果字符串只由3个单词组成:
^(?=.*?(one))(?=.*?(two))(?=.*?(three))(?:(?:\1|\2|\3);?){3}$
见test at regex101.com(右边的解释); Regex FAQ