Regex pour correspondre à la chaîne contenant deux noms dans n’importe quel ordre

J’ai besoin de logique ET en regex.

quelque chose comme

jack et james

d’accord avec les chaînes suivantes

  • “Salut Jack, voici James

  • “Salut James, voici Jack

Vous pouvez faire des vérifications à l’aide de vues:

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

Essaye-le.

Cette approche présente l’avantage de pouvoir facilement spécifier plusieurs conditions.

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

Essayer:

 james.*jack 

Si vous voulez les deux en même temps, alors or eux:

 james.*jack|jack.*james 

Explication de commande que je vais écrire : –

. signifie que n’importe quel caractère, chiffre peut remplacer.

* signifie une ou une occurrence de chose écrite juste avant.

| signifie “ou” .

Alors,

 james.*jack 

rechercherait james , puis n’importe quel nombre de caractères jusqu’à ce que jack vienne.

Puisque vous voulez soit jack.*james ou james.*jack

D’où commande :

 jack.*james|james.*jack 

Tu peux faire:

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