En général, et avec les paramètres par défaut, ^
et $
Les ancres sont une bonne façon de s'assurer qu'une regex correspond à une chaîne entière.
Quelques mises en garde, cependant:
Si vous avez alternance dans votre regex, assurez-vous de joindre votre regex dans un groupe non-capture avant d'entourer ^
et $
:
^foo|bar$
est- bien sûr différent de
^(?:foo|bar)$
en outre, ^
et peut $
prendre une signification différente (début/fin de ligne au lieu de début/fin de chaîne) si certaines options sont définies. Dans les éditeurs de texte qui prennent en charge les expressions régulières, il s'agit généralement du comportement par défaut. Dans certaines langues, en particulier Ruby, ce comportement ne peut même pas être désactivé.
Par conséquent, il est une autre série de points d'ancrage qui sont garantis pour seul match au début/fin de la chaîne entière:
\A
matchs au début de la chaîne. Correspond à la fin de la chaîne ou avant un saut de ligne final.
\z
correspond à la toute fin de la chaîne.
Mais toutes les langues ne prennent pas en charge ces ancres, notamment JavaScript.
Pourquoi avez-vous besoin d'une regex pour quelque chose qu'un simple 'string.Contains' fonctionnera? – Oded
La raison pour laquelle je dois utiliser une regex est que je l'utilise pour une recherche dans MongoDB et je dois le faire pour être insensible à la casse qui ne peut être fait avec une regex – Micah
Pourquoi ne pas convertir (à la volée) les données db à minuscules et minuscules de l'utilisateur pour la recherche? – greenoldman