0

正则表达式以任何顺序匹配包含两个名称的字符串很好地解释了如何以任何顺序匹配字符串。所以使用

(?=.*\bjack\b)(?=.*\bjames\b)

将匹配

jack,james

james,jack

但是,它也会匹配

jack,james,jill

我如何构造一个正则表达式以任何顺序匹配字符串,但只匹配那些字符串(即一个正则表达式,它将以任何顺序匹配 jack 和 james,但不匹配包含除 jack 和 james 之外的任何内容的字符串)

4

1 回答 1

2

这取决于你所说的“除了杰克和詹姆斯之外的任何东西”的确切含义,但一般的想法是匹配一些数量的\b(jack|james)\b,被其他字符包围:

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

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

^\W*(\b(jack|james)\b\W*){2,3}$
于 2013-01-20T23:45:40.457 回答