[JAVA] Unterscheiden Sie mit regulären Ausdrücken zwischen ganzen Zahlen und Brüchen

Ein Memorandum bei der Beurteilung der Ganzzahl / des Bruchs einer Zeichenfolge in Java

Was du machen willst

Ich möchte eine Zeichenfolge, die nur aus Zahlen und Dezimalstellen besteht, als positiv behandeln. (Ohne Indexnotation usw.) Bei der Double.parsedouble (str) -Methode werden die Exponentialnotationen `2.4e + 8```,` NaN und `` Infinity analysiert. Verwenden Sie daher einen regulären Ausdruck. Ich habe ein Urteil gefällt.

Voraussetzungen

jdk1.8.0_40

Ergebnis

^-?(0|[1-9]\d*)(\.\d+|)$

Prüfung

Testcode


List<String> targets = Arrays.asList("0","-0","0.8","0.878","1","-1","1.1",
    "1.123","544","42.195","000","000.0","2.4e+8","3.1e-2","-6.75e-7",
    "0X02.Bp-1","1.","155.","000.0","-0.","-0000.","0x07","A","1",
    "-","NaN","Infinity","-Infinity");
String regex = "^-?(0|[1-9]\\d*)(\\.\\d+|)$";
Pattern p = Pattern.compile(regex);
for(String s : targets){
  Matcher matcher = p.matcher(s);
  if(matcher.matches())
    System.out.println("match! : " + s);
  else
    System.out.println("Unzutreffend: " + s);
}

Das Testziel ist geeignet.

result


match! : 0
match! : -0
match! : 0.8
match! : 0.878
match! : 1
match! : -1
match! : 1.1
match! : 1.123
match! : 544
match! : 42.195
Unzutreffend: 000
Unzutreffend: 000.0
Unzutreffend: 2.4e+8
Unzutreffend: 3.1e-2
Unzutreffend: -6.75e-7
Unzutreffend: 0X02.Bp-1
Unzutreffend: 1.
Unzutreffend: 155.
Unzutreffend: 000.0
Unzutreffend: -0.
Unzutreffend: -0000.
Unzutreffend: 0x07
Unzutreffend: A
Unzutreffend: 1
Unzutreffend: -
Unzutreffend: NaN
Unzutreffend: Infinity
Unzutreffend: -Infinity

Recommended Posts

Unterscheiden Sie mit regulären Ausdrücken zwischen ganzen Zahlen und Brüchen
Wechseln Sie die Beans mit den kanonischen Ausdrücken @ConditionalOnExpression und SpEL
Analysieren Sie japanische Adressen mit regulären Ausdrücken
Reguläre Ausdrücke
Unterscheiden Sie zwischen Laufzeit- und Kompilierungszeitpolymorphismus
Einfach mit regulären Java-Ausdrücken zu stolpern
Unterscheiden Sie in Java zwischen positiven und negativen Zahlen
[Swift] Über die Unfähigkeit, mit NS Predicate zwischen voller und halber Breite zu unterscheiden
[RSpec] WebMock verarbeitet reguläre Ausdrücke und Array-Abfragezeichenfolgen
Vermitteln Sie mit Gradle den Streit zwischen Power Mock und Jacoco