2016-04-04 2 views
-2

Ich möchte überprüfen, ob meine Nummer ein Regex-Muster entspricht.Java regex Übereinstimmung Nummer Muster

Was ich erreichen möchte, ist eine Überprüfung, ob eine Zahl mit dem Muster übereinstimmt und dann Execution Code.

Meine if-Anweisung ist die folgende:

public String refactorNumber(String input){ 
    if(input.matches("#,##0.##")) { 
     //execute code 
    } 
} 

Aber es nie übereinstimmt, meine Eingangsnummern sind:

- 0 
- 100 
- 1,100.01 

Was mache ich falsch?

+0

Wofür wird '#' verwendet? – rock321987

+0

Das ist kein regulärer Ausdruck. – Mena

+0

# = Nummer, aber nicht zwingend – Jonas

Antwort

0

Es sieht so aus, als ob Sie die Syntax für reguläre Ausdrücke nicht richtig verstanden haben, fürchte ich.

Aus Ihrem Beispielcode sieht es so aus, als ob Sie versuchen, eine Ziffer gefolgt von einem Komma, gefolgt von zwei Ziffern, gefolgt von einer Null gefolgt von einem Dezimalpunkt gefolgt von zwei Ziffern.

, das zu tun, Ihr regulärer Ausdruck sein müßte:

für herauszufinden, Muster
\d,\d{2}0\.\d{2} 

Eine große Ressource ist dieses Blatt regex Cheat:

https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

, dass vor Ort ist leider Probleme haben, können Sie diese Google-Suche verwenden, um sie zu finden:

https://www.google.co.uk/search?q=regex+cheat+sheet&tbm=isch

+1

Darf ich [Rubular] empfehlen (http://rubular.com/) –

0

Man könnte es auf diese Weise tun (korrigiert mich wenn ich es falsch mache):

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public static void main(String[] args) { 

    String input =" - 0\n"+ 
     " - 100\n"+ 
     " - 1,100.01\n"+ 
     " - 100,100,3\n"+ 
     " - 100,100,3.15\n"+ 
     ""; 
    refactorNumber(input); 
} 

public static void refactorNumber(String input){ 
    Matcher m = Pattern.compile("((?:\\d,)?\\d{0,2}0(?:\\.\\d{1,2})?)(?!\\d*,)").matcher(input); 
    while (m.find()) { 
     //execute code 
    } 
0

Hier ist eine einfache Code-Zeile, die ich nur Zahlen zu erfassen, verwenden möchten.

if (input.matches("[0-9]*") { 
//code here 
}