Regex para corresponder string contendo dois nomes em qualquer ordem

Eu preciso de lógica AND in regex.

algo como

jack e james

concordo com as seguintes strings

  • ‘hi jack aqui é james

  • ‘oi james aqui é o jack

Você pode fazer verificações usando lookarounds:

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

Teste-o.

Essa abordagem tem a vantagem de poder especificar facilmente várias condições.

 ^(?=.*\bjack\b)(?=.*\bjames\b)(?=.*\bjason\b)(?=.*\bjules\b).*$ 

Experimentar:

 james.*jack 

Se você quer os dois ao mesmo tempo, então or eles:

 james.*jack|jack.*james 

Explicação de comando que eu vou escrever :

. significa qualquer caractere, dígito pode vir no lugar de.

* significa uma ou zero ocorrência de coisa escrita logo antes dela.

| significa ‘ou’ .

Assim,

 james.*jack 

procuraria james , então qualquer número de personagem até o jack chegar.

Desde que você quer jack.*james ou james.*jack

Daqui Comando :

 jack.*james|james.*jack 

Você pode fazer:

 \bjack\b.*\bjames\b|\bjames\b.*\bjack\b