Chcę dopasować dwa hasła za pomocą wyrażenia regularnego. Na przykład mam dwa wejścia „123456” i „1234567”, wtedy wynik nie powinien być zgodny (fałsz). A kiedy wpisałem „123456” i „123456”, wynik powinien być zgodny (prawda).
Nie mogłem zrobić miny. Jak mam to zrobić?
Odpowiedzi:
jeśli masz hasło wejściowe w zmiennej i chcesz dopasować dokładnie 123456, wtedy kotwice Ci pomogą:
w perlu test na dopasowanie hasła wyglądałby podobnie
EDYTOWAĆ:
bart kiers ma rację, ale dlaczego nie użyjesz do tego strcmp ()? każdy język ma to na swój sposób
po drugie, możesz rozważyć bezpieczniejszy mechanizm uwierzytelniania :)
źródło
\z
zamiast$
./^123456$/
pasuje zarówno123456
a123456
następnie przesunięcia wiersza podczas gdy/^123456\z/
tylko meczów123456
.W odpowiedzi Malfaux „^” i „$” zostały użyte do wykrycia początku i końca tekstu.
Są one zwykle używane do wykrywania początku i końca wiersza.
Jednak w tym przypadku może to być właściwy sposób.
Ale jeśli chcesz dopasować dokładne słowo, bardziej eleganckim sposobem jest użycie „\ b” . W tym przypadku następujący wzorzec będzie pasował dokładnie do wyrażenia „123456”.
źródło
\bhttp:\/\/www.foo.com\b
będzie pasowaćhttp://www.foo.com=?http://www.foo.com
wraz z adresem URL bez zmian . Pierwsza odpowiedź, używając^
(początek) i$
(koniec) jest najlepszą metodą za pośrednictwem tych testerów: regex101.com i regexr.com (tester zawarty w poniższym linku nie jest zbyt przyjazny dla użytkownika, te są znacznie lepsze)zapewnia to, że dopasowanie nie jest poprzedzone jakimś znakiem, cyfrą lub podkreśleniem i nie następuje bezpośrednio po nim znak lub cyfra ani podkreślenie
więc dopasuje „abc” w „abc”, „abc.”, „abc”, ale nie „4abc” ani „abcde”
źródło
\w
pasuje zarówno cyfry jak i litery, więc[\w\d]
jest zbędny.Bardziej prostym sposobem jest sprawdzenie równości
jeśli jednak naprawdę chcesz trzymać się wyrażeń regularnych,
źródło
Można także spróbować dodanie spacji na początku i na końcu słowa kluczowego:
/\s+123456\s+/i
.źródło