Chcę sprawdzić, czy dane użytkownika po stronie serwera. Jeśli użytkownik wpisze numer 111111 lub 22222, który ma te same numery, a także jeśli wejście jest w sekwencji jak 12345 lub 456789.RegEx, aby sprawdzić, czy cyfry w liczbie są takie same lub w kolejności
Odpowiedz
pasujące do kolejnych samymi cyframi:
^([0-9])\1*$
pamiętać, że Muszę uciec z ukośnika odwrotnego, gdy umieścisz go w literale ciągów java, np "^([0-9])\\1*$"
.
W drugim należy jawnie utworzyć listę kolejnych cyfr za pomocą operatora |
. Regex byłby naprawdę długi i nieprzyjemny z aż dziesięcioma zagnieżdżonymi parantezami. Trzeba wygenerować to wyrażenie za pomocą programu. Innymi słowy, jest to niewłaściwy problem do rozwiązania przy użyciu regex. Łatwiej byłoby napisać pętlę i przetestować to.
Ten wzór będzie pasował jeśli użytkownik wpisze taką samą cyfrę:
^(\d)\1*$
\1
mecze pierwszej grupy przechwytywania, więc pasuje do wzorca, czy ta pierwsza cyfra jest powtarzany dla całego łańcucha.
Drugi problem (kolejne cyfry) jest nieco trudniejszy.
^(?:^(?:^(?:^(?:^0?1)?2)?3)4?)?5(?:$|6(?:$|7(?:$|8(?:$|90?))))$|
^(0?1)?2(?:$|3(?:$|4))|^(6?7)?8(?:$|90?)$
to jedna z realizacji, przyjmująca trzy lub więcej cyfr. Ale ponieważ liczba kombinacji jest niewielka, wyliczając (4+ cyfr) możliwe jest również:
^(?:0?123(45?)?|1?23456?|2?34567?|3?45678?|4?56789?|(5?6)?7890?|
(0?1)?2345678?(90$)?|1?23456789?|2?345678(90?)?)$
Wszystko to powiedział, wyrażenia regularne nie zawsze działa dobrze dla tego typu problemu. Metoda Java do sprawdzenia tej sekwencji może być czystsza.
Drugie wyrażenie nie pasuje do ciągów takich jak "123", "345" itp. Edycja: OK, teraz widzę, że założyłeś "6 cyfr". –
dziękuję Susam, widziałem, że 6 cyfr nie było wymogiem i zmieniono post, aby był bardziej ogólny. – drf
rozwiązuje, jeśli numer zaczyna się od 0 lub 1, myślę. Dla pętli była bardzo przydatna. Thanx przy okazji. – yyy
Tym razem w Perlu, aby wyjaśnić drugi przypadek łatwiej:
perl -nlE 'say "BAD number" if ($_ =~ /^(\d)\1*$/ or "123456789" =~ /$_/)'
Objaśnienie:
- Przypadek 1: Wejście ∈
/(\d)\1*/
język: już przedstawione ($_ =~ /^(\d)\1*$/
) - Przypadek 2: ciąg znaków "123456789" odpowiada wprowadzeniu (
"123456789" =~ /$_/
)
- 1. Aby sprawdzić, czy dwa pliki graficzne są takie same, czy nie .Checksum lub Hash?
- 2. Regex na 3 cyfry (nie pamiętasz kolejności)?
- 3. Sprawdź, czy dwa elementy są takie same
- 4. jQuery - jak sprawdzić, czy dwa elementy są takie same?
- 5. wykryć, czy dwie ścieżki są takie same
- 6. Czy CDN i Cloud są takie same?
- 7. Czy drools są takie same jak jrules?
- 8. Java regex i sed nie są takie same ...?
- 9. Jak sprawdzić, czy dwa plasterki numpy tablice są takie same (lub nakładających się)?
- 10. C# określić, czy wszystkie znaki w ciągu są takie same
- 11. Wyrażenie regularne, aby sprawdzić, czy pierwsze dwa słowa są takie same
- 12. Czy dwie instrukcje są zawsze takie same w perlu?
- 13. Czy CAST i CONVERT są takie same w SQL?
- 14. Jak posortować cyfry w liczbie?
- 15. Regex, aby dopasować co najmniej 2 cyfry, 2 litery w dowolnej kolejności w ciągu znaków
- 16. Sprawdzanie wszystkie wartości w elemencie są takie same
- 17. Jak sprawdzić, czy wszystkie wartości w kolumnach macierzy numpy są takie same?
- 18. Jak mogę sprawdzić, czy dwa elementy DOM zawinięte w jQuery są takie same?
- 19. Czy lewe połączenia zewnętrzne i lewe łączenia są takie same?
- 20. Pythoniczny sposób sprawdzania, czy długości wielu list są takie same
- 21. Tablica w php i dict w python są takie same?
- 22. Regex, aby sprawdzić, czy białe znaki są obecne?
- 23. XML :: LibXML - wykrywanie, czy dwa elementy są takie same?
- 24. Czy "div> p" i "div p" są takie same?
- 25. Czy znaki Unicode i Ascii są takie same?
- 26. Czy idempotentne funkcje są takie same jak czyste funkcje?
- 27. Listy są takie same, ale nie są uważane za równe?
- 28. Regex, aby sprawdzić, czy liczba jest równa
- 29. Znajdź dwie linie w pliku, które są takie same
- 30. Jak sprawdzić, czy podane słowo jest w liczbie mnogiej lub w liczbie pojedynczej?
A co z 8910? Czy to jest "sekwencja"? –
Co powiesz na 2335777, czy to "w sekwencji"? – Cephalopod