comment faire correspondre un nombre qui est inférieur ou égal à 100?
Je veux correspondre à un nombre qui est inférieur ou égal à 100, il peut être n'importe quoi à l'intérieur de 0 à 100, mais les regex ne doit pas correspondre à un nombre qui est plus grand que 100 comme 120, 130, 150, 999, etc.
- Que diriez -
0.5
ou1e2
? Si ce match? Qu'en est0000001
? - Pourquoi voulez-vous utiliser une regex pour cela? Perl a déjà parfaitement utilisables Booléens les opérateurs de comparaison (<, <=, ==, >, >=).
- Comme Dave dit, êtes-vous sûr que vous voulez une expression régulière? Perl va traiter une variable comme une chaîne de caractères ou un nombre interchangably, et vous pourriez écrire
if ($num >= 0 and $num <= 100) { ... }
- BTW, vous pouvez également placer votre condition
if($n>=0 && $n<=100)
dans une regex en utilisant un code de l'assertion 😉
Vous devez vous connecter pour publier un commentaire.
Essayer cette
Explication
Visite (lien supprimé) pour de futurs problèmes.
Comment parler pour la regex:
cela permettrait de valider 7, 82, 100 pour des exemples, mais serait pas valider 07 ou 082.
Check this out pour plus d'informations (et les variations, y compris zéro préfixant) sur le numéro de contrôle de la portée
Si vous avez besoin pour répondre à des nombres à virgule flottante, vous devriez lire ce, ici, c'est une expression, vous pouvez utiliser:
Virgule flottante:
^[-+]?([0-9]|[1-9][0-9]|100)*\.?[0-9]+$
Utilisation Code Affirmations si vous avez besoin d'une regex (éventuellement):
Test:
Résultat:
(==> Voici les géohelminthiases. pour en savoir sur le code des assertions).
Mes Conseils pratiques.
Personnellement, je voudrais éviter d'écrire un tel complexe regex tout à fait. Que faire si votre nombre de changements de 100 à 200 dans un avenir proche. Votre regex va avoir à changer de manière significative et il pourrait être encore plus difficile à écrire. Toutes les solutions ci-dessus ne sont PAS explicites et vous devrez la compléter par un commentaire dans le code. C'est une odeur.
La lisibilité des questions. Le Code est pour les humains et pas des machines.
Pourquoi ne pas écrire un peu de code autour d'elle et de garder la regex de la mort simple à comprendre.
cela correspond à 0 à 100
[1-8][0-9]|9[0-9]
en[0-9]{2}
que les deux d'entre eux sont des numéros à deux chiffres.Cette expression correspond au nombres de 0 à 100 diapason et d'interdire de tels chiffres 001:
12.12
est aussi un nombre entre0-100
.regex pour cette