Jestem początkującym z regex, więc jeśli chodzi o to,Próbuję się tego nauczyć szukając podobnych problemów tutaj na stosie, ale po wielu próbach utknąłem i nie mogę znaleźć, gdzie jest problem w moim własnym regex.
Szukam kogoś, kto pomoże mi z moim już stworzonym regexem (podanym poniżej) lub poda mi lepszy pomysł / rozwiązanie.
Potrzebuję wyrażeń regularnych, które zawierają liczby w zakresie od 0 do 75, maksymalnie 4 cyfry, w tym 2 cyfry dziesiętne. Na przykład 75.00 lub 15.50, ale także pełna liczba bez cyfr dziesiętnych powinna być poprawną liczbą, taką jak: 75, 15 (nie zawarty 00).
Oto kilka liczb poniżej, które powinny być ważne i nieważne:
WAŻNE LICZBY:
0
0.1
0.10
5.15
5.52
15.50
74.99
75.00
75
NIEWAŻNE LICZBY:
00
-10
-0
-0.50
00.50
05.15
75.01
76.00
76
76.19
I tutaj jest moje już stworzone wyrażenie regularne, które powinno być oczywiście poprawione:
^(75(?:.00?)?|[1-7]?[0-5](?:.dd?)?|d(?:.d?d)?)$
Tutaj też jest próbny.
p.s. Szukałem podobnej odpowiedzi na to powiązane pytanie.
Odpowiedzi:
2 dla odpowiedzi № 1Musisz naprawić swój wzór w następujący sposób:
^(?:75(?:.00?)?|7[0-4](?:.dd?)?|[1-6]?d(?:.dd?)?)$
Zobacz regex demo
Detale:
^(?:
- początek łańcucha i początek grupy niezapisującej (tak, jak kotwice mogą być zastosowane do wszystkich alternatyw w grupie naprzemiennej)75(?:.00?)?
-75
następnie z opcjonalną sekwencją.
,0
i opcjonalnie0
|
- lub7[0-4](?:.dd?)?
-7
następnie z cyfrą od0
do4
a następnie z opcjonalną sekwencją.
, cyfrę, a następnie opcjonalną cyfrę|
- lub[1-6]?d(?:.dd?)?
- opcjonalna cyfra z1
do6
, a następnie dowolna cyfra, a następnie opcjonalna sekwencja.
, cyfrę, a następnie opcjonalną cyfrę)$
- koniec pierwszej grupy i końca łańcucha
1 dla odpowiedzi nr 2
Bardzo podobało mi się granie z tym narzędziem RegEx z twojego demo. Myślę, że musisz dodać więcej zajęć do RegEx:
^ (([1-6]? [0-9]) $ | ^ (7 [0-5]) $ | ^ (([1-6]? [0-9])). [0-9] [0-9]?) $ | ^ ((7 [0-4]). [0-9] [0-9]?) $ | ^ (75,00?) $
Pozdrowienia,