Ik wil twee wachtwoorden koppelen aan reguliere expressies. Ik heb bijvoorbeeld twee ingangen “123456” en “1234567”, dan zou het resultaat niet overeenkomen (false). En als ik “123456” en “123456” heb ingevoerd, moet het resultaat overeenkomen (waar).
Ik kon de uitdrukking niet maken. Hoe doe ik het?
Antwoord 1, autoriteit 100%
als je een invoerwachtwoord in een variabele hebt en je wilt exact overeenkomen met 123456, dan kunnen ankers je helpen:
/^123456$/
in perl zou de test voor het matchen van het wachtwoord zoiets zijn als
print "MATCH_OK" if ($input_pass=~/^123456$/);
BEWERKEN:
bart kiersheeft gelijk, waarom gebruik je hiervoor geen strcmp()? elke taal heeft het op zijn eigen manier
Als een tweede gedachte, wilt u misschien een veiliger authenticatiemechanisme overwegen 🙂
Antwoord 2, autoriteit 85%
In het antwoord van malfaux zijn ‘^’en ‘$’gebruikt om het begin en het einde van de tekst te detecteren.
Deze worden meestal gebruikt om het begin en het einde van een regel te detecteren.
In dit geval kan dit echter de juiste manier zijn.
Maar als u een exact woord wilt vinden, is de elegantere manier om ‘\b’te gebruiken. In dit geval komt het volgende patroon overeen met de exacte frase ‘123456’.
/\b123456\b/
Antwoord 3, autoriteit 20%
(?<![\w\d])abc(?![\w\d])
dit zorgt ervoor dat uw overeenkomst niet wordt voorafgegaan door een teken, cijfer of onderstrepingsteken en niet onmiddellijk wordt gevolgd door teken of cijfer of onderstrepingsteken
zodat het overeenkomt met “abc” in “abc”, “abc.”, “abc”, maar niet “4abc”, noch “abcde”
Antwoord 4, autoriteit 3%
Een meer rechttoe rechtaan manier is om te controleren op gelijkheid
if string1 == string2
puts "match"
else
puts "not match"
end
Als u zich echter echt aan reguliere expressie wilt houden,
string1 =~ /^123456$/
Antwoord 5, autoriteit 2%
U kunt ook proberen een spatie toe te voegen aan het begin en einde van het zoekwoord: /\s+123456\s+/i
.