Expression régulière pour une correspondance exacte d'une chaîne
Je veux correspondre à deux mots de passe avec expression régulière. Par exemple, j'ai deux entrées "123456" et "1234567" alors le résultat devrait être pas le match (false). Et quand je suis entré "123456" et "123456", alors le résultat doit être de match (true).
Je ne pouvais pas faire de l'expression. Comment dois-je faire?
- Pourquoi voulez-vous regex dans ce cas? La vérification de (exacte) de l'égalité devrait vraiment être fait sans regex.
- Parce que nous regardons comment remplacer du texte dans un script Bash et obtenez une réponse qui implique de Perl et de regex.
- ayant le même problème de trouver une meilleure solution ^(123456) donnera les résultats que vous voulez
- Double Possible de Match ensemble de la chaîne de caractères
Vous devez vous connecter pour publier un commentaire.
si vous avez une entrée de mot de passe dans une variable et que vous voulez faire correspondre exactement 123456 puis ancres va vous aider à:
en perl le test pour faire correspondre le mot de passe serait quelque chose comme
EDIT:
bart kiers est droit tho, pourquoi n'utilisez-vous pas un strcmp() pour cela? chaque langue a dans sa propre méthode
comme une seconde pensée, vous souhaitez mai à envisager une plus sûrs mécanisme d'authentification 🙂
Dans malfaux la réponse de '^' et '$' a été utilisé pour détecter le début et la fin du texte.
Ce sont généralement utilisés pour détecter le début et la fin d'une ligne.
Cependant cela peut être la façon correcte dans ce cas.
Mais si vous souhaitez faire correspondre exactement le même mot la plus élégante est d'utiliser '\b'. Dans ce cas le motif suivant va correspondre à la phrase exacte "123456'.
\bhttp:\/\/www.foo.com\b
correspondrahttp://www.foo.com=?http://www.foo.com
avec l'URL comme est. La première réponse, à l'aide de la^
(début) et$
(fin) est la meilleure méthode via ces testeurs: regex101.com et regexr.com (le testeur inclus dans les liens ci-dessous n'est pas très convivial, ce sont bien mieux)cela permet de s'assurer que votre match n'est pas précédée par certains caractères, un nombre ou un caractère de soulignement et n'est pas suivie immédiatement par ou le nombre de caractères, ou un trait de soulignement
si elle correspond à "abc" dans "abc", "abc"., "abc ", mais pas "4abc", ni "abcde"
\w
correspond à des chiffres et des lettres, de sorte[\w\d]
est redondante.Plus simple est de vérifier l'égalité
toutefois, si vous voulez vraiment en tenir à l'expression régulière,
Vous pouvez aussi essayer d'ajouter un espace au début et à la fin du mot:
/\s+123456\s+/i
.\s
via: regex101.com