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 devrait pas correspondre (faux). Et quand j'ai entré "123456" et "123456", le résultat devrait être égal (vrai).
Je n'ai pas pu faire l'expression. Comment fait-on ça?
Réponses:
si vous avez un mot de passe d'entrée dans une variable et que vous voulez correspondre exactement à 123456, les ancres vous aideront:
en perl, le test de correspondance du mot de passe serait quelque chose comme
ÉDITER:
bart kiers a raison, pourquoi n'utilisez-vous pas un strcmp () pour cela? chaque langue l'a à sa manière
en guise de seconde réflexion, vous voudrez peut-être envisager un mécanisme d'authentification plus sûr :)
la source
\z
place de$
./^123456$/
correspond aux deux123456
et123456
suivi d'un saut de ligne, tandis que/^123456\z/
correspond uniquement123456
.Dans la réponse de malfaux, «^» et «$» ont été utilisés pour détecter le début et la fin du texte.
Ceux-ci sont généralement utilisés 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, la manière la plus élégante est d'utiliser '\ b' . Dans ce cas, le modèle suivant correspondra à l'expression exacte «123456».
la source
\bhttp:\/\/www.foo.com\b
et correspondrahttp://www.foo.com=?http://www.foo.com
avec l'URL telle quelle . La première réponse, en utilisant le^
(début) et$
(fin) est la meilleure méthode via ces testeurs: regex101.com et regexr.com (le testeur inclus dans un lien ci-dessous n'est pas très convivial, ils sont bien meilleurs)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 n'est pas immédiatement suivie d'un caractère ou d'un nombre, ou d'un trait de soulignement
donc il correspondra à "abc" dans "abc", "abc.", "abc", mais pas "4abc", ni "abcde"
la source
\w
correspond aux chiffres et aux lettres, ce qui[\w\d]
est redondant.Une manière plus simple consiste à vérifier l'égalité
cependant, si vous voulez vraiment vous en tenir à l'expression régulière,
la source
Vous pouvez également essayer annexant un espace au début et à la fin du mot - clé:
/\s+123456\s+/i
.la source