Reguliere uitdrukking voor exacte overeenkomst van een tekenreeks

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.

Other episodes