正则表达式以任何顺序匹配字符串,也限制只是那些字符串

时间:2013-01-20 23:24:58

标签: regex

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>

1 个答案:

答案 0 :(得分:2)

这取决于“杰克和詹姆斯以外的任何东西”究竟是什么意思,但一般的想法是匹配一些\b(jack|james)\b,并被其他角色包围:

^\W*(\b(jack|james)\b\W*)*$

您可以指定匹配的确切数量或范围,而不是使用*。例如,要精确匹配2或3个这样的单词:

^\W*(\b(jack|james)\b\W*){2,3}$