Je veux faire correspondre deux mots de passe avec une expression régulière. Par exemple, j'ai deux entrées "123456" et "1234567", alors le résultat ne doit pas correspondre (faux). Et quand je suis entré "123456" et "123456" alors le résultat devrait être match (true).
Je ne pouvais pas faire l'expression. Comment fait-on ça?
si vous avez le mot de passe entré dans une variable et que vous voulez correspondre exactement à 123456, les ancres vous aideront:
/^123456$/
en Perl le test pour faire correspondre le mot de passe serait quelque chose comme
print "MATCH_OK" if ($input_pass=~/^123456$/);
MODIFIER:
bart kiers a raison, pourquoi n'utilisez-vous pas strcmp () pour cela? chaque langue a sa propre manière
en second lieu, vous voudrez peut-être envisager un mécanisme d'authentification plus sûr :)
Dans la réponse de malfaux, '^' et '$' a été utilisé pour détecter le début et la fin du texte.
Celles-ci sont généralement utilisées pour détecter le début et la fin d'une ligne.
Cependant, cela peut être la bonne manière dans ce cas.
Mais si vous souhaitez faire correspondre un mot exact, le moyen le plus élégant consiste à utiliser '\ b'. Dans ce cas, le motif suivant correspond à la phrase exacte "123456".
/\b123456\b /
(?<![\w\d])abc(?![\w\d])
cela garantit que votre correspondance n'est pas précédée d'un caractère, d'un chiffre ou d'un trait de soulignement et qu'elle n'est pas suivie immédiatement par un caractère ou un nombre, ou un trait de soulignement
donc il va correspondre à "abc" dans "abc", "abc.", "abc", mais pas "4abc", ni "abcde"
Un moyen plus simple est de vérifier l’égalité
if string1 == string2
puts "match"
else
puts "not match"
end
cependant, si vous voulez vraiment vous en tenir à l’expression régulière,
string1 =~ /^123456$/
Vous pouvez également essayer d'ajouter un espace au début et à la fin du mot clé: /\s+123456\s+/i
.