Hallo ich möchte eine Zahl, die kleiner oder gleich 100 ist, es kann alles innerhalb 0-100 sein, aber die Regex sollte nicht für eine Zahl übereinstimmen, die größer als 100 ist wie 120 130,150,999, etc ..Wie passt man eine Zahl an, die kleiner oder gleich 100 ist?
Antwort
regex für dieses
perl -le 'for (qw/0 1 19 32.4 100 77 138 342.1/) { print "$_ is ", /^(?:100|\d\d?)$/ ? "valid input" : "invalid input"}'
Wie wäre dies für die regex:
^([0-9]|[1-9][0-9]|100)$
auf 7, 82, 100 für Beispiele bestätigen würde, würde aber nicht validieren 07 oder 082.
Check this out für weitere Informationen (und Variationen einschließlich Null Vorfixierung) auf Nummernbereich Überprüfung
Wenn Sie Gleitkommazahlen gerecht zu werden benötigen, sollten Sie read this, hier ist ein Ausdruck, den Sie verwenden können:
Gleitpunkt: ^[-+]?([0-9]|[1-9][0-9]|100)*\.?[0-9]+$
Versuchen Sie, diese
\b(0*(?:[1-9][0-9]?|100))\b
Erklärung
"
\b # Assert position at a word boundary
( # Match the regular expression below and capture its match into backreference number 1
0 # Match the character “0” literally
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?: # Match the regular expression below
# Match either the regular expression below (attempting the next alternative only if this one fails)
[1-9] # Match a single character in the range between “1” and “9”
[0-9] # Match a single character in the range between “0” and “9”
? # Between zero and one times, as many times as possible, giving back as needed (greedy)
| # Or match regular expression number 2 below (the entire group fails if this one fails to match)
100 # Match the characters “100” literally
)
)
\b # Assert position at a word boundary
"
Besuchen here für zukünftige Probleme.
Verwenden -Code Assertions, wenn Sie einen regulären Ausdruck benötigen (schließlich):
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/
Test:
my @nums = (-1, 0, 10, 22, 1e10, 1e-10, 99, 101, 1.001e2);
print join ',', grep
/^(.+)$(??{$^N>=0 && $^N<=100 ? '':'^'})/,
@nums
Ergebnis:
0,10,22,1e-010,99
versucht, den Link zu sehen, aber immer noch nicht verstehen, die Regexp. Denkst du, du kannst es erklären? (besonders der ---? '': '^' --- Teil – taiko
Diese Regex passt die Zahlen 0-100 diapason und nicht zulassen Zahlen wie 001:
\b(0|[1-9][0-9]?|100)\b
Meine praktische Tipps.
Persönlich würde ich eine solche komplexe Regex überhaupt nicht schreiben. Was ist, wenn sich Ihre Nummer in naher Zukunft von 100 auf 200 ändert? Ihre Regex muss sich erheblich ändern und es könnte noch schwieriger zu schreiben sein. Alle oben genannten Lösungen sind nicht selbsterklärend und Sie müssen es mit einem Kommentar in Ihrem Code ergänzen. Das ist ein Geruch.
Lesbarkeit ist wichtig. Code ist für Menschen und nicht für Maschinen.
Warum nicht etwas Code um es herum schreiben und Regex tot einfach zu verstehen halten.
diese Übereinstimmung mit 0 zu 100
^0*([0-9]|[1-8][0-9]|9[0-9]|100)$
- 1. Gegeben eine Zahl N, wie viele Zahlenpaare eine Quadratsumme kleiner oder gleich N haben?
- 2. Wie wird ein Django-Queryset kleiner oder gleich gefiltert?
- 3. Erstellen Sie eine Dropdown-Box, die Zahlen enthält, die gleich oder kleiner als eine Zahl in einem anderen Feld sind.
- 4. KLEINER ODER GLEICH IN Oracle SQL
- 5. Ist 1.0em gleich wie 100% für Schriftgrößen?
- 6. Wie passt man CQRS an Projekte an?
- 7. iOS 9 Einschränkungen kleiner als oder gleich X && gleich oder größer als Y
- 8. Überprüfen Sie, ob eine Zahl in einem Array kleiner ist als eine Zahl im anderen Array
- 9. Für Schleife. Warum ist es kleiner als <nicht kleiner als oder gleich <=?
- 10. Zeigen Sie eine Tabellenzeile an, wenn ein Feldwert kleiner als eine Zahl ist
- 11. Warum zeigt Eclipse keine Zahl kleiner als Null an?
- 12. Wie schreibe ich eine R-Funktion oder Schleife, die jede dritte Zahl oder n-te Zahl in [1, 100] ausgibt?
- 13. Wie passt man Zend_Tool Output an?
- 14. Wie passt man einen "Übereinstimmung" -Ausdruck an?
- 15. GridLayoutManager - Wie passt man Spalten automatisch an?
- 16. Wie passt man die to_json Methode in rails3 an?
- 17. Wie passt man die Standard-Login-Seite in ActiveAdmin an?
- 18. Wie passt man eine Poisson-Verteilung mit Seabohnen an?
- 19. Wie passt man das Zeitformat für die Python-Protokollierung an?
- 20. Warum ist die Fenstergröße kleiner oder gleich der halben Sequenznummer im SR-Protokoll?
- 21. wie schreibe ich es, um zu sagen, ob eine Zahl gleich ist oder nicht
- 22. Wie erzeuge ich zufällig eine Zahl zwischen 75 - 100%?
- 23. Wie überprüft man, ob das heutige Monatsdatum größer oder kleiner als eine Dezimalzahl ist?
- 24. Wie passt man das normale Koordinatensystem mit dem Bildkoordinatensystem an?
- 25. Wie passt man eine gegebene 2d-Matrix an die Submatrix einer anderen 2d-Matrix an?
- 26. Wie kann eine Validierungsregel in Yii2 festgelegt werden, die größer oder kleiner als eine bestimmte Zahl oder ein bestimmter Wert ist?
- 27. Wählen Sie, wo die Zahl gleich unendlich ist
- 28. Wird write (2) immer kleiner oder gleich SSIZE_MAX schreiben?
- 29. Wie passt man einen Text in UILabel an, wenn die Größe nicht proportional ist
- 30. Runden Sie eine Ganzzahl auf den nächsten int, der kleiner oder gleich ist, und ein Vielfaches von 64
Wie wäre es '0.5' oder' 1e2'? Sollten diese zusammenpassen? Was ist mit '0000001'? –
Warum möchten Sie eine Regex dafür verwenden? Perl verfügt bereits über perfekt zu bedienende Boolesche Vergleichsoperatoren (<, <=, ==, >,> =). –
Wie Dave sagt, willst du wirklich einen regulären Ausdruck? Perl behandelt eine Variable als String oder als Zahl, und Sie können 'if ($ num> = 0 und $ num <= 100) {...}' – Borodin