web-dev-qa-db-fra.com

Regex pour faire correspondre une chaîne contenant deux noms dans n'importe quel ordre

J'ai besoin de logique ET dans regex.

quelque chose comme 

jack et james

d'accord avec les chaînes suivantes

  • 'hi jack voici james '

  • 'salut james voici jack '

122
Meloun

Vous pouvez faire des vérifications en utilisant lookarounds :

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

Essaye-le.

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

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

Essayer:

james.*jack

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

james.*jack|jack.*james
73
icyrock.com

Explication de la commande que je vais écrire : -

. signifie n'importe quel caractère, le chiffre peut entrer à la place de.

* signifie zéro ou plusieurs occurrences de choses écrites juste avant.

| signifie 'ou'.

Alors,

james.*jack

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

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

D'oùCommand:

jack.*james|james.*jack
29
Shubham Sharma

Tu peux faire:

\bjack\b.*\bjames\b|\bjames\b.*\bjack\b
6
codaddict

C'est court et doux

(?=.*jack)(?=.*james)
0
Shivam Agrawal