Skip to content

Quelle est l’expression régulière Java pour une chaîne de nombres entiers uniquement ?

Solution:

Dans Java regex, vous n’utilisez pas de délimiteurs /:

nuevo_precio.getText().matches("^\d+$")

Depuis String.matches() (ou Matcher.matcher()) force la chaîne entière à correspondre au modèle à retourner true, les ^ et $ sont en fait redondants et peuvent être supprimés sans affecter le résultat. C’est un peu différent de JavaScript, PHP (PCRE) ou Perl, où “match” signifie trouver une sous-chaîne dans la chaîne cible qui correspond au modèle.

nuevo_precio.getText().matches("\d+") // Equivalent solution

Cela ne fait pas de mal de le laisser là, cependant, car cela signifie l’intention et rend le regex plus portable.


Se limiter à exactement Numéros à 4 chiffres :

"\d{4}"

Comme d’autres l’ont déjà dit, java n’utilise pas de délimiteurs. La chaîne que vous essayez de faire correspondre n’a pas besoin des barres obliques de fin, donc au lieu de /^\d+$/ votre chaîne aurait dû être ^\d+$.

Maintenant, je sais que c’est une vieille question, mais la plupart des gens ici ont oublié quelque chose de très important. Les correct regex pour les entiers :

^-?d+$

Le décomposer :

^         String start metacharacter (Not required if using matches() - read below)
 -?       Matches the minus character (Optional)
   d+   Matches 1 or more digit characters
       $  String end metacharacter (Not required if using matches() - read below)

Bien sûr, en Java, vous auriez besoin d’une double barre oblique inverse au lieu de la barre oblique inverse normale, donc la chaîne Java qui correspond à l’expression régulière ci-dessus est ^-?\d+$


REMARQUE: Les ^$ (début/fin de chaîne) les caractères ne sont pas nécessaires si vous utilisez .matches():

Bienvenue sur Java mal nommé .matches() méthode … Il essaie et correspond à TOUTES les entrées. Malheureusement, d’autres langues ont emboîté le pas 🙁

– Tiré de cette réponse

L’expression régulière fonctionnerait toujours avec le ^$ de toute façon. Même si c’est facultatif, je l’inclurais toujours pour la lisibilité de l’expression régulière, comme dans tous les autres cas lorsque vous ne faites pas correspondre la chaîne entière par défaut (ce qui est la plupart du temps si vous n’utilisez pas .matches()) vous utiliseriez ces caractères


Pour faire correspondre le contraire :

^D+$

Les D est tout ce qui n’est pas un chiffre. Les D (Non chiffres) nie d (chiffres).

Regex entier sur regex101


Notez que c’est juste pour entiers. L’expression régulière pour double:

^-?d+(.d+)?$

Le décomposer :

^         String start metacharacter (Not required if using matches())
 -?               Matches the minus character. The ? sign makes the minus character optional.
   d+           Matches 1 or more digit characters
       (          Start capturing group
        .d+     A literal dot followed by one or more digits
             )?   End capturing group. The ? sign makes the whole group optional.
               $  String end metacharacter (Not required if using matches())

Bien sûr qu’en Java au lieu de d et . vous auriez des doubles barres obliques inverses comme le fait l’exemple ci-dessus.

Double regex sur regex101

Java n’utilise pas de barres obliques pour délimiter les expressions régulières.

.matches("\d+")

Devrait le faire.

Pour info le String.matches() la méthode doit correspondre à la entier entrée pour retourner true.


Même dans des langages comme perl, les barres obliques ne font pas partie de la regex ; elles sont délimiteurs – partie si le code de l’application, rien à voir avec la regex


Tags : / /

Articles Similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.