182 votes

Comment vérifier si une chaîne ne contient que des chiffres en Java ?

En Java, pour la classe String, il y a une méthode appelée matches, comment utiliser cette méthode pour vérifier si ma chaîne ne contient que des chiffres en utilisant une expression régulière. J'ai essayé avec les exemples ci-dessous, mais les deux m'ont renvoyé false comme résultat.

String regex = "[0-9]"; String data = "23343453"; System.out.println(data.matches(regex));


String regex = "^[0-9]"; String data = "23343453"; System.out.println(data.matches(regex));

3 votes

0 votes

2 votes

Tu devrais te documenter sur les expressions régulières. Elles comportent deux éléments principaux : les atomes et les quantificateurs . Vous avez spécifié un atome sans spécifier de quantificateur.

419voto

vikingsteve Points 6357

Essayez

String regex = "[0-9]+";

ou

String regex = "\\d+";

Où le + signifie "un ou plusieurs" et \d signifie "chiffre".

Remarque : la "double barre oblique" donne une barre oblique. "\\d" vous donne : \d

35voto

Apurv Points 2640

Vous pouvez également utiliser NumberUtil.isNumber(Chaîne str) de Apache Commons

1 votes

@user2065083 Il est toujours recommandé d'utiliser l'API standard pour résoudre votre problème. Toute personne qui la lit une seule fois peut comprendre (et maintenir) votre code. C'est donc bénéfique à long terme.

4 votes

Notez que cette méthode correspond également à Chiffres Unicode .

3 votes

Notez que cela correspondra également à des chaînes telles que 0xAF , 2.3e-4 y 123L .

12voto

jlordo Points 22012

Une autre solution, qui n'a pas encore été postée :

String regex = "\\p{Digit}+"; // uses POSIX character class

9voto

Carlo Pellegrini Points 2845

Vous devez prévoir plus d'un chiffre (le + ) comme dans :

String regex = "[0-9]+"; 
String data = "23343453"; 
System.out.println(data.matches(regex));

7voto

NimChimpsky Points 20263
Long.parseLong(data)

et attrape l'exception, il gère le signe moins.

Bien que le nombre de chiffres soit limité, cela crée en fait une variable des données qui peut être utilisée, ce qui est, j'imagine, le cas d'utilisation le plus courant.

4 votes

Que se passe-t-il si c'est une chaîne de caractères qui contient plus de chiffres que ce que Integer peut supporter ?

0 votes

@BrianAgnew vous avez un très grand nombre, changé en long.

3 votes

Que se passe-t-il si c'est une chaîne de caractères qui contient plus de chiffres que ce que Long peut supporter ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X