Regex to match string containing two names in any order对如何按任意顺序匹配字符串有一个很好的解释。所以使用
(?=.*\bjack\b)(?=.*\bjames\b)
将匹配
jack,james
和
james,jack
但是,它也会匹配
jack,james,jill
如何构造正则表达式以匹配字符串的任何顺序,但只匹配那些字符串(即任何顺序匹配jack和james的正则表达式,但不匹配包含jack和james之外的任何字符串的字符串)< / p>
答案 0 :(得分:2)
这取决于“杰克和詹姆斯以外的任何东西”究竟是什么意思,但一般的想法是匹配一些\b(jack|james)\b
,并被其他角色包围:
^\W*(\b(jack|james)\b\W*)*$
您可以指定匹配的确切数量或范围,而不是使用*
。例如,要精确匹配2或3个这样的单词:
^\W*(\b(jack|james)\b\W*){2,3}$