web-dev-qa-db-fra.com

Expression régulière pour la correspondance exacte d'une chaîne

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?

119
Chirayu

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 :)

141
user237419

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 /

122
prageeth
(?<![\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"

26
Aedna

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$/
6
kurumi

Vous pouvez également essayer d'ajouter un espace au début et à la fin du mot clé: /\s+123456\s+/i.

2
Bhushan Lodha