Ich möchte zwei Passwörter mit regulären Ausdrücken abgleichen. Zum Beispiel habe ich zwei Eingänge "123456" und "1234567", dann sollte das Ergebnis nicht übereinstimmen (false). Und wenn ich "123456" und "123456" eingegeben habe, sollte das Ergebnis übereinstimmen (true).
Ich konnte den Ausdruck nicht machen. Wie mache ich es?
Antworten:
Wenn Sie ein Eingabekennwort in einer Variablen haben und genau mit 123456 übereinstimmen möchten, helfen Ihnen Anker:
In Perl wäre der Test zum Abgleichen des Passworts so etwas wie
BEARBEITEN:
bart kiers ist richtig tho, warum benutzt du dafür nicht ein strcmp ()? Jede Sprache hat es auf ihre Weise
Als zweiten Gedanken möchten Sie vielleicht einen sichereren Authentifizierungsmechanismus in Betracht ziehen :)
quelle
\z
statt$
./^123456$/
stimmt mit beiden überein123456
und wird123456
von einem Zeilenvorschub gefolgt, während/^123456\z/
nur übereinstimmt123456
.In Malfaux 'Antwort wurden ' ^ ' und ' $ ' verwendet, um den Anfang und das Ende des Textes zu erkennen.
Diese werden normalerweise verwendet, um den Anfang und das Ende einer Zeile zu erkennen.
Dies kann jedoch in diesem Fall der richtige Weg sein.
Wenn Sie jedoch ein genaues Wort finden möchten, ist es eleganter, '\ b' zu verwenden . In diesem Fall entspricht das folgende Muster genau der Phrase '123456'.
quelle
\bhttp:\/\/www.foo.com\b
übereinhttp://www.foo.com=?http://www.foo.com
. Die erste Antwort mit^
(Anfang) und$
(Ende) ist die beste Methode über diese Tester: regex101.com und regexr.com (der in einem Link unten enthaltene Tester ist nicht sehr benutzerfreundlich, diese sind viel besser)Dadurch wird sichergestellt, dass Ihrer Übereinstimmung kein Zeichen, keine Zahl oder kein Unterstrich vorangestellt ist und nicht sofort ein Zeichen, eine Zahl oder ein Unterstrich folgt
so wird es mit "abc" in "abc", "abc.", "abc", aber nicht mit "4abc" oder "abcde" übereinstimmen.
quelle
\w
mit Ziffern und Buchstaben überein,[\w\d]
ist also redundant.Ein direkterer Weg ist die Überprüfung der Gleichheit
Wenn Sie sich jedoch wirklich an den regulären Ausdruck halten möchten,
quelle
Sie können auch versuchen, ein Leerzeichen am Anfang und Ende des Schlüsselworts anzuhängen :
/\s+123456\s+/i
.quelle